C 语言中,有时需要将变量(特别是 char、int 或 unsigned char 类型)以十六进制格式输出,如调试二进制数据或显示 ASCII 码。使用 unsigned char 处理原始字节,防止符号扩展。打印十六进制数据时,可以用空格或换行分隔,提高可读性。

1、使用 printf() 打印十六进制

使用 printf 打印十六进制数的两种格式(小写和大写)。

#include <stdio.h>

int main() {
    int value = 26;  // 任意整数值

    // 打印小写十六进制
    printf("小写十六进制: %x\n", value);

    // 打印大写十六进制
    printf("大写十六进制: %X\n", value);

    return 0;
}

2、补零输出(带前导零)

使用 printf 打印一个 1 字节的值,宽度为 2,并且如果该值不足 2 位,左边会补充 0。 %02X 是格式控制符。

#include <stdio.h>

int main() {
    unsigned char ch = 10;  // 任意 1 字节的值

    // 输出 1 字节,宽度 2,左边补 0(如:0A)
    printf("十六进制: %02X\n", ch);

    return 0;
}

3、打印多个字节为十六进制

data数组中的每个字节以二位十六进制数的格式打印出来。

#include <stdio.h>

int main() {
    unsigned char data[] = {0x01, 0xAB, 0xFF, 0x5C};
    int len = sizeof(data)/sizeof(data[0]);

    for (int i = 0; i < len; i++) {
        printf("%02X ", data[i]);
    }

    return 0;
}

4、打印 char 字符本身的十六进制值

输出 A 的 ASCII 值为 41,是其十六进制表示。使用 (unsigned char)c 是为了确保在传递给 printf 时,c 被正确地视为无符号字符,避免任何潜在的类型转换问题。

#include <stdio.h>

int main() {
    char c = 'A';  // ASCII: 65 = 0x41

    // 打印字符及其十六进制 ASCII 值
    printf("Char: %c, Hex: %02X\n", c, (unsigned char)c);

    return 0;
}

5、格式控制总结表

格式符说明示例输出
%x小写十六进制ab
%X大写十六进制AB
%02X宽度 2、补 0 的大写十六进制0A
%#x带前缀 0x 的小写十六进制0xab
%#X带前缀 0X 的大写十六进制0XAB

推荐文档

相关文档

大家感兴趣的内容

随机列表