大家都知道,一个int 或 unsigned int是由4个字节组成的,(《C/C++学习指南》,第3章,第3.2.3节:变量的内存视图)
例如,
int n = sizeof( int) ; // n为4
大家也能够清晰明白地看到内存里,那4个字节就在那,(《C/C++学习指南》,附录:VC2008调试方法)
但问题是:如何在代码里转成4个字节呢?
方法1:memcpy
这种方法很暴力,也不科学。大家先试一下。
unsigned int a = 0x12345678;
unsigned char buf[4];
memcpy(buf, &a, 4);
观察buf数组的4个元素的值,是不是就是0x78 0x56 0x34 0x12 (嗯,小端的,这就是缺陷,我们想要的结果其实是 buf[0]=0x12 buf[1]=0x34 buf[2]=0x56 buf[4]=0x78)
方法2:正规方法 (《C/C++学习指南》,第6章,第6.8节)
buf[0] = a >> 24;
buf[1] = a >> 16;
buf[2] = a >> 8;
buf[3] = a;
用你的VC看一下,是不是正合你意。直接在调试状态下看,别再printf了。
不用谢了,应该的!
时间: 2024-10-28 00:41:29