c++实现整型和字节数组间的转化

整型转换到字节数组

在网络传输中经常需要将整型数字转换成字节数组,然后将字节数组发送到客户端,在c++,int是4个字节,long是8个字节。废话不说,代码如下(byte类型是uchar):
int32_t bytesto_int4(byte *bytes)
{
    //turn bytes array to integer
    int32_t num = bytes[0] & 0xFF;
    num |= ((bytes[1] << 8) & 0xFF00);
    num |= ((bytes[2] << 16) & 0xFF0000);
    num |= ((bytes[3] << 24) & 0xFF000000);
    return num;
}

字节数组到整型

void int4to_bytes(int32_t num, byte *bytes /*in array size must be 4*/)
{
    //turn integer to bytes array
    bytes[0] = num;
    bytes[1] = num >> 8;
    bytes[2] = num >> 16;
    bytes[3] = num >> 24;
}

扩展(长整型到字节数组)

void int8to_bytes(int64_t num, byte *bytes /*in array size must be 8*/)
{
    bytes[0] = num;
    bytes[1] = num >> 8;
    bytes[2] = num >> 16;
    bytes[3] = num >> 24;
    bytes[4] = num >> 32;
    bytes[5] = num >> 40;
    bytes[6] = num >> 48;
    bytes[7] = num >> 56;
}

字节数组到长整型

int64_t bytesto_int8(byte *bytes /*size must be 8*/)
{
    //turn bytes array to integer
    int64_t num = bytes[0] & 0xFF;
    num |= (((int64_t)bytes[1] << 8) & 0xFF00);
    num |= (((int64_t)bytes[2] << 16) & 0xFF0000);
    num |= (((int64_t)bytes[3] << 24) & 0xFF000000);
    num |= (((int64_t)bytes[4] << 32) & 0xFF00000000);
    num |= (((int64_t)bytes[5] << 40) & 0xFF0000000000);
    num |= (((int64_t)bytes[6] << 48) & 0xFF000000000000);
    num |= (((int64_t)bytes[7] << 56) & 0xFF00000000000000);
    return num;
}
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值