用C语言写一个十进制负数原码转换十六进制的接口函数
时间: 2024-03-12 21:45:21 浏览: 133
可以使用以下代码实现:
```c
#include <stdio.h>
void decToHex(int dec) {
int hex[8]; // 存储十六进制数的每一位
int i = 0;
if (dec < 0) {
printf("-");
dec = -dec; // 先取绝对值再转换
}
while (dec != 0) {
hex[i] = dec % 16;
dec /= 16;
i++;
}
if (i == 0) {
printf("0\n"); // 特殊处理输入为0的情况
return;
}
for (int j = i - 1; j >= 0; j--) {
switch (hex[j]) {
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
default:
printf("%d", hex[j]);
break;
}
}
printf("\n");
}
int main() {
int dec = -123;
decToHex(dec);
return 0;
}
```
该函数的参数为一个十进制负数,会将其转换为十六进制并输出。注意,该函数接受的是原码而非补码。
阅读全文