首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用字节流BYTE兑现int

2013-07-08 
用字节流BYTE实现int把int的四个自己,按大端顺序放到byte类型里面,完后就把这个数组当int类型了,怎么搞,封

用字节流BYTE实现int
把int的四个自己,按大端顺序放到byte类型里面,完后就把这个数组当int类型了,怎么搞,封装一个类还是写几个方法比较好?
[解决办法]
int转化为BYTE数组

    int n = 0X23F7A8D0;
    BYTE m[4];
    m[0] = n >> 24;
    m[1] = (n >> 16) & 0XFF;
    m[2] = (n >> 8) & 0XFF;
    m[3] = (n ) & 0XFF;
    printf("%d %d %d %d\n",m[0],m[1],m[2],m[3]);

[解决办法]
如果,大小端合适,尽量用
enum {
  int32 i;
  BYTE[4];
}

不能用这种方法,可以考虑交换1、4字节,交换2、3字节,或者用1L的方法
[解决办法]

void i2b(int i, BYTE* b)
{
b[0] = i >> 24;
b[1] = i >> 16;
b[2] = i >> 8;
b[3] = i;
}

void b2i(int* i, const BYTE* b) 
{
*i = b[3];
*i 
[解决办法]
= b[2] << 8;
*i 
[解决办法]
= b[1] << 16;
*i 
[解决办法]
= b[0] << 24;
}

[解决办法]
引用:
如果,大小端合适,尽量用
enum {
  int32 i;
  BYTE[4];
}

不能用这种方法,可以考虑交换1、4字节,交换2、3字节,或者用1L的方法


如果,往里面写的是BYTE,读int值那就好说了。你自己控制下读入顺序来迎合大小端就行了。
[解决办法]
2L,应该是union。

union foo {
  int a;
  char b[4];
};
大小端通过b[]的索引顺序反映。

热点排行