C++怎样取int类型中的每个字节

如题所述

1、利用文件,把这个int数值用二进制的方法写入文件,然后以char型读取。
(运行环境:64位CentOS,sizeof(int)=4)
通过memcpy,将int型变量的首地址作为src buffer,char数组作为dst buffer,每个int型变量占据buffer的4个字节。
2、参考例程如下:

#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE     10
int main(int argc, char * argv[]) {
char buffer[BUFFER_SIZE] = {0};
int input1 = 0, input2 = 0, output1 = 0, output2 = 0;
printf("size of int: %d\n", sizeof(int));
printf("Please input two integers\n");
scanf("%d", &input1);
scanf("%d", &input2);
printf("The input integers are : %d %d\n", input1, input2);
memcpy(buffer, &input1, sizeof(int));
memcpy(buffer + sizeof(int), &input2, sizeof(int));
printf("Buffer:\n");
for (int i = 0; i < BUFFER_SIZE; ++i) {
printf("0x%02x ", buffer[i]);
}
printf("\n");
memcpy(&output1, buffer, sizeof(int));
memcpy(&output2, buffer + sizeof(int), sizeof(int));
printf("The output integers retrieved from buffer: %d %d\n", output1, output2);
return 0;
}

注意:
不同语言、不同机器间通过buffer来存取int型值,要注意大头、小头的区别,必要时要做大小头转换操作。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-04
这个问题吗,感觉没有什么必要,如果你真的想的话 ,我可以告诉你一个麻烦的方法,就是利用文件,你把这个数值用二进制的方法写入文件,然后以char型读取。相信这样就可以得到解决。只是这种方法相对来说有点麻烦,但是没有问题。这种方法适用于c++和c放言。但是c++中要用到类.read() 如果还有什么问题的话。咱们共同探讨本回答被提问者采纳
第2个回答  2010-07-04
你试一下用共用体看看?
union data
{
int i;
char ch[4];
}
int和char[4]合为一个共用体,然后对char数组里面的操作,可以对int进行改变,同样的,char也可以取int每个字节的内容
第3个回答  2010-07-04
位操作
int 有4字节
char 1字节
如int i;
char a = i>>24;
char b = (i&0x00FF0000)>>16;
char c = (i&0x0000FF00)>>8;
char d = i&0x000000FF
相似回答