根据 C 中的字节数从 char 数组复制整数
copying integers from char array depending on number of bytes in C
我有一个包含整数值的 8 字节字符数组。我需要将 1 个字节复制到一个整数变量,接下来的 4 个字节复制到不同的整数变量,接下来的 3 个字节到另一个整数变量。
我用过 "memcpy" 但结果不正确。
我的尝试:
unsigned char bytes[8];
int Data1 = 32769;
int Data2 = 65535;
int logic1 = 0;
int logic2 = 0;
int logic3 = 0;
memcpy(&bytes[0], &Data1, sizeof(Data1));
memcpy(&bytes[4], &Data2, sizeof(Data2));
//Value of bytes[] array after this operation is
//bytes[0] = 1
//bytes[1] = 128
//bytes[2] = 0
//bytes[3] = 0
//bytes[4] = 255
//bytes[5] = 255
//bytes[6] = 0
//bytes[7] = 0
memcpy(&logic1,&bytes,1);
memcpy(&logic2,&bytes + 1,4);
memcpy(&logic3,&bytes + 5,1);
My output should be :
logic1 = bytes[0]
logic2 = bytes[1] to bytes[4]
logic3 = bytes[5] to bytes[7]
我想你的意思是
memcpy( &logic1, &bytes[0], 1 );
memcpy( &logic2, &bytes[1], 4 );
memcpy( &logic3, &bytes[5], 3 );
注意&bytes
是指向整个数组的指针,所以&bytes + 1
指向数组末尾之外,&bytes + 5
远远超出数组的末尾。因此你会得到未定义的行为和无法解释的结果。
我有一个包含整数值的 8 字节字符数组。我需要将 1 个字节复制到一个整数变量,接下来的 4 个字节复制到不同的整数变量,接下来的 3 个字节到另一个整数变量。 我用过 "memcpy" 但结果不正确。
我的尝试:
unsigned char bytes[8];
int Data1 = 32769;
int Data2 = 65535;
int logic1 = 0;
int logic2 = 0;
int logic3 = 0;
memcpy(&bytes[0], &Data1, sizeof(Data1));
memcpy(&bytes[4], &Data2, sizeof(Data2));
//Value of bytes[] array after this operation is
//bytes[0] = 1
//bytes[1] = 128
//bytes[2] = 0
//bytes[3] = 0
//bytes[4] = 255
//bytes[5] = 255
//bytes[6] = 0
//bytes[7] = 0
memcpy(&logic1,&bytes,1);
memcpy(&logic2,&bytes + 1,4);
memcpy(&logic3,&bytes + 5,1);
My output should be :
logic1 = bytes[0]
logic2 = bytes[1] to bytes[4]
logic3 = bytes[5] to bytes[7]
我想你的意思是
memcpy( &logic1, &bytes[0], 1 );
memcpy( &logic2, &bytes[1], 4 );
memcpy( &logic3, &bytes[5], 3 );
注意&bytes
是指向整个数组的指针,所以&bytes + 1
指向数组末尾之外,&bytes + 5
远远超出数组的末尾。因此你会得到未定义的行为和无法解释的结果。