c语言 如何把一个8字节的数据 变成2个4字节的数据

c语言 最好不要c++

用int指针去读,int指针是4字节,读两次就行了,比如long int a=某常数。。。。
你只要写int b[2];int *c;
c=&a; b[0]=*c,b[1]=*(c+1);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-06
不明白是什么意思,是字符串还是一个数?

比如12345678拆成1234和5678?
第2个回答  推荐于2018-05-06
long bData;
低四字节 = (int)bData&0x0000ffffffff;
高四字节 = (int)(bData>>32);本回答被网友采纳
第3个回答  2013-02-25
理解错误!追问

大哥 如何反过来啊 就是把2个4位合位一个8位~ 谢谢了 最好解释下啊 我学java的 c语言不是很了解
特别是结构体 ~~~我会给你追加分的 大哥~

追答

是8位还是8字节,我那个刚开始想成8位了

追问

字节吧 就是00110011(char) 变为0011(char) 和 0011(char)

追答

你这是8位啊 8字节共64位的,可以用移位处理的,位段应该也行
#include
int main()
{
union
{
char ch;
struct
{
unsigned x:4;//低四位
unsigned y:4;//高四位
} bits;
} num;
printf("\n输入大小在 0 and 255间的整数:");
scanf("%d",&num.ch);
printf("ch=%x y=%x x=%x \n",num.ch,num.bits.y,num.bits.x);
num.bits.x=0x4;
num.bits.y=0x7;
printf("ch=%x y=%x x=%x \n",num.ch,num.bits.y,num.bits.x);
}

追问

大哥 反过来怎么 算啊 就是俩个4位变一个8位

追答

地下这不是吗?
num.bits.x=0x4;
num.bits.y=0x7;
printf("ch=%x y=%x x=%x \n",num.ch,num.bits.y,num.bits.x);
先给低四位赋值0x4,高四位赋值0x7,打印出来的num.ch不就是0x74吗?

本回答被提问者采纳
相似回答