C语言不用printf将输入的数据变为十六进制
时间: 2024-09-09 08:17:24 浏览: 118
在C语言中,如果不使用`printf`函数来输出数据的十六进制形式,可以采用其他方法,比如使用`putchar`逐个字符地输出,或者直接操作内存中的数据。下面提供一个使用`putchar`函数的示例代码:
```c
#include <stdio.h>
void print_hex(unsigned char data) {
char hex_digits[] = "0123456789ABCDEF";
putchar(hex_digits[data >> 4]); // 先输出高四位
putchar(hex_digits[data & 0x0F]); // 再输出低四位
}
void print_buffer_hex(const unsigned char *buffer, size_t len) {
for (size_t i = 0; i < len; ++i) {
print_hex(buffer[i]);
}
}
int main() {
unsigned char data[] = {0x12, 0x34, 0x56, 0x78};
print_buffer_hex(data, sizeof(data));
putchar('\n');
return 0;
}
```
这段代码定义了两个函数:`print_hex`用于输出单个字节的十六进制表示,而`print_buffer_hex`用于输出一个字节数组的十六进制表示。这里使用了简单的位操作和查找表(`hex_digits`数组)来转换数字到对应的十六进制字符。
阅读全文