对于我的项目,我需要制作一个十六进制计算器,除了我需要将其转换为二进制并显示它,我知道这很容易。我可以读取的十六进制的最大值是'8'但是如果我读了一个少于8个字符的十六进制数,我需要用0表示第一个二进制数.Ej:
in Hex:ADA0CAFE
in Binary:10101101 10100000 11001010 11111110
但是如果我得到一个十六进制:C45FA
输出应为:00000000 00001100 01000101 11111010
我的部分代码看起来像这样:
char hex[100];
printf("Hexadecimal: ");
scanf("%s",hex);
convert(hex);
以及转换它的功能:
void convert(char hex[]){
for(i=0;i<8;i++){
switch(hex[i]){
case '0': printf("0000"); break;
case '1': printf("0001"); break;
case '2': printf("0010"); break;
case '3': printf("0011"); break;
.
.
.
}
所以我不知道如何使用0填充数组填充的第一个位置,然后开始用十六进制字符编写数组。
答案 0 :(得分:2)
在convert
中找到传递的十六进制字符串的长度,并输出前导0000
字符串以使长度为8.也许是这样:
void convert(char hex[]){
size_t len, i;
len = strlen(hex);
for(i = len; i < 8; i++) {
printf("0000"); // pad with leading zeros
}
for(i = 0; i < len; i++) { // the rest of the string
switch(hex[i]) {
case '0': printf("0000"); break;
case '1': printf("0001"); break;
case '2': printf("0010"); break;
case '3': printf("0011"); break;
.
.
.
}
}
}