如何在单个字节上将十进制数保存为十六进制?

时间:2016-12-31 10:19:53

标签: c char

#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”?

1 个答案:

答案 0 :(得分:0)

问题是数据溢出。当{0x} = 239时,char为-128~127。 因此,您可以使用intshort类型,或仅使用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]);
}