使用c语言写一个二进制转十六进制的代码
时间: 2023-09-14 17:06:15 浏览: 139
### 回答1:
我建议你可以使用以下代码来实现:#include <stdio.h>
#include <string.h>int bin2hex(char *binStr, char *hexStr)
{
long i, j, n;
char ch;
n = strlen(binStr);
if (n%4) {
return -1;
}
j = 0;
for (i=0; i<n; i+=4) {
ch = 0;
if (binStr[i]=='1') {
ch += 8;
}
if (binStr[i+1]=='1') {
ch += 4;
}
if (binStr[i+2]=='1') {
ch += 2;
}
if (binStr[i+3]=='1') {
ch += 1;
}
if (ch<10) {
hexStr[j] = ch + 48;
} else {
hexStr[j] = ch + 55;
}
j++;
}
hexStr[j] = '\0';
return 0;
}int main(void)
{
char binStr[33], hexStr[9];
printf("Please input 32 bits binary string: ");
scanf("%s", binStr);
bin2hex(binStr, hexStr);
printf("The hexadecimal string is: %s\n", hexStr);
return 0;
}
### 回答2:
以下是使用C语言编写的一个二进制转十六进制的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int binaryToHexadecimal(int binary) {
int hexadecimal = 0, i = 1, remainder;
while(binary != 0) {
remainder = binary % 10;
hexadecimal += remainder * i;
i *= 2;
binary /= 10;
}
return hexadecimal;
}
int main() {
int binary;
printf("请输入一个二进制数字: ");
scanf("%d", &binary);
int hexadecimal = binaryToHexadecimal(binary);
printf("转换为十六进制: %X\n", hexadecimal);
return 0;
}
```
这个代码示例中,我们首先定义了一个`binaryToHexadecimal`函数来将二进制数转换为十六进制数。在函数中,我们使用一个循环来处理二进制数的每一位,将其乘以相应的权重后累加到最终的十六进制数中。最后,返回转换后的十六进制数。
在`main`函数中,我们首先提示用户输入一个二进制数字,并将其存储在`binary`变量中。然后,调用`binaryToHexadecimal`函数来获取转换后的十六进制数,并使用`printf`函数将结果打印出来。
注意,在这个示例中,我们假设输入的二进制数是一个整数。如果输入的是一个字符串表示的二进制数,首先需要将其转换为整数形式。此外,在输入二进制数时,请确保其位数不超过32位,以免发生溢出错误。
### 回答3:
以下是使用C语言编写的二进制转十六进制的代码:
```c
#include <stdio.h>
#include <string.h>
void binToHex(char* binary) {
int len = strlen(binary);
int decimal = 0, factor = 1;
int i, j = 0;
char hex[100];
for (i = len - 1; i >= 0; i--) {
decimal += (binary[i] - '0') * factor;
factor *= 2;
if ((len - i) % 4 == 0) {
if (decimal < 10) {
hex[j] = decimal + '0';
} else {
hex[j] = decimal - 10 + 'A';
}
decimal = 0;
factor = 1;
j++;
}
}
if (len % 4 != 0) {
if (decimal < 10) {
hex[j] = decimal + '0';
} else {
hex[j] = decimal - 10 + 'A';
}
j++;
}
printf("对应的十六进制数是: ");
for (i = j - 1; i >= 0; i--) {
printf("%c", hex[i]);
}
}
int main() {
char binary[100];
printf("请输入一个二进制数: ");
scanf("%s", binary);
binToHex(binary);
return 0;
}
```
在该代码中,`binToHex`函数将二进制数转换为十六进制数,并使用`printf`语句将结果输出。`main`函数接受用户输入的二进制数,并调用`binToHex`函数进行转换。最后,程序输出转换后的十六进制数。