#include <stdio.h>
int main()
{
int x = 255;
char hex[4] = {0};
hex[0] = 0x02;
hex[1] = 0x20;
hex[2] = 0xef;
hex[3] = x;
for(int i = 0; i < 4; i++)
printf("%X ", hex[i]);
}
输出“2 20 FFFFFFEF FFFFFFFF”。应该更改什么以便输出“02 20 EF FF”?
答案 0 :(得分:0)
问题是数据溢出。当{0x} = 239时,char
为-128~127。
因此,您可以使用int
或short
类型,或仅使用unsigned char
:
#include <stdio.h>
int main()
{
int x = 255;
unsigned char hex[4] = {0};
hex[0] = 0x02;
hex[1] = 0x20;
hex[2] = 0xef;
hex[3] = x;
for(int i = 0; i < 4; i++)
printf("%02X ", hex[i]);
}