QByteArray转int方法1:
/**
* @brief 小端模式字节数组转为无符号整数
* @param data 字节数组,不能大于4字节
* @return 无符号整数
*/
static uint bytes2Int(QByteArray data);
uint GlobalVals::bytes2Int(QByteArray data){
uint n=0;
int len = data.length()>=4?4:data.length();
for(int i=0;i<len;i++){
unsigned char c=data.at(i);
n+=c<<(8*i);
}
return n;
}
QByteArray转int方法2:
/**
* @brief 2字节数组转为16位有符号整数
* @param data 字节数组,2字节,多于2字节的舍弃
* @return 有符号整数
*/
static int16_t bytes2SignedInt16(QByteArray data);
int16_t GlobalVals::bytes2SignedInt16(QByteArray data)
{
int16_t v = 0;
v = *((int16_t *) data.left(2).constData());
return v;
}
int转QByteArray方法1:
/**
* @brief int2Bytes int值转4个元素的QByteArray
* @param value int值
* @return 小端模式的int值的字节数组
*/
static QByteArray int2Bytes(int value);
QByteArray GlobalVals::int2Bytes(int value){
return GlobalVals::int2Bytes(value,4);
}
int转QByteArray方法2:
/**
* @brief int2Bytes int值前指定个字节转QByteArray
* @param value int值
* @param byteCount 字节数,从小端模式的低位开始
* @return 小端模式的int值的字节数组
*/
static QByteArray int2Bytes(int value,int byteCount);
QByteArray GlobalVals::int2Bytes(int value, int byteCount){
QByteArray result;
for(int i=0;i<byteCount;i++){
result.append(char((value>>(8*i))&0x0FF));
}
return result;
}