C语言有符号16进制与十进制互相转换
时间: 2023-06-26 18:09:59 浏览: 404
是的,C语言可以实现符号16进制与十进制的互相转换。下面是两个函数的示例代码,一个用于将有符号十进制数转换为有符号16进制数,另一个用于将有符号16进制数转换为有符号十进制数:
```c
#include <stdio.h>
// 有符号十进制数转换为有符号16进制数
void decToHex(int dec) {
printf("%d in decimal = ", dec);
if (dec < 0) {
printf("-");
dec = -dec;
}
printf("0x%X in hex\n", dec);
}
// 有符号16进制数转换为有符号十进制数
void hexToDec(char* hex) {
printf("%s in hex = ", hex);
int dec = (int) strtol(hex, NULL, 16);
printf("%d in decimal\n", dec);
}
int main() {
// 测试
decToHex(123); // 输出 123 in decimal = 0x7B in hex
decToHex(-123); // 输出 -123 in decimal = -0x7B in hex
hexToDec("7B"); // 输出 123 in decimal
hexToDec("-7B"); // 输出 -123 in decimal
return 0;
}
```
其中,`decToHex`函数将有符号十进制数转换为有符号16进制数,并打印转换结果;`hexToDec`函数将有符号16进制数转换为有符号十进制数,并打印转换结果。在`main`函数中,我们分别测试了这两个函数的功能。
阅读全文