用字节流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;
}
[解决办法]
如果,往里面写的是BYTE,读int值那就好说了。你自己控制下读入顺序来迎合大小端就行了。
[解决办法]
2L,应该是union。
union foo {
int a;
char b[4];
};
大小端通过b[]的索引顺序反映。