C++ byteToInt,intToByte

以下均为小端cpu

1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 uint64_t

(1) bytetoInt

这个为大端
struct test
{
char pCount[4];
};
test st;
//将char[4]转化成int,char[3]为低8位
int count = (st.pCount[0]<<24) | (st.pCount[1]<<16) | (st.pCount[2]<<8) | st.pCount[3];

以下均为小端
//byte数组长度为4, bytes[3]为高8位
uint32_t bytesToInt(uint8_t* bytes)
{
uint32_t tmp = 0x00;
tmp = (tmp | bytes[3]) << 8;
tmp = (tmp | bytes[2]) << 8;
tmp = (tmp | bytes[1]) << 8;
tmp = (tmp | bytes[0]) ;
return tmp;
}

// byte数组长度为4, bytes[3]为高8位
uint32_t bytes2Int(uint8_t* bytes)
{
uint32_t value=0;
value = ((bytes[3] & 0xff)<<24)|
((bytes[2] & 0xff)<<16)|
((bytes[1] & 0xff)<<8) |
( bytes[0] & 0xff);

return value;

}

例子:
uint8_t ss[4] = {1,1,0,0};
int val = bytes2Int(ss);
qDebug()<<"========== val : "<<val;

打印:
========== val : 257

(2) intToBytes
uint8_t* int2Bytes( uint32_t value )
{
uint8_t* src = new uint8_t[4];
src[3] = (uint8_t) ((value>>24) & 0xFF);
src[2] = (uint8_t) ((value>>16) & 0xFF);
src[1] = (uint8_t) ((value>>8) & 0xFF);
src[0] = (uint8_t) (value & 0xFF);
return src;
}

例子:
uint8_t* arr = int2Bytes(257);
qDebug()<<"========== arr[0] : “<<arr[0]
<<”\n========== arr[1] : “<<arr[1]
<<”\n========== arr[2] : “<<arr[2]
<<”\n========== arr[3] : "<<arr[3];

打印:
========== arr[0] : 1
========== arr[1] : 1
========== arr[2] : 0
========== arr[3] : 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值