C编程十六进制转字符

标签 c char hex

我想要做的是让用户输入一个十六进制数,然后这个数字将被转换为一个字符并显示到监视器上,这将一直持续到遇到 EOF。我有与此代码相反,将 char 转换为十六进制数。我遇到的问题是如何从我为 char2hex 程序使用 getchar() 的用户那里得到一个十六进制数。十六进制数有没有类似的函数?

这是 char2hex 程序的代码

#include <stdio.h>
int main(void) {
    char myChar;
    int counter = 0;

    while (EOF != (myChar = getchar())) {
        /* don't convert newline into hex */
        if (myChar == '\n')
            continue;
        printf("%02x ", myChar);

        if (counter > 18) {
            printf("\n");
            counter = -1;
        }
        counter++;
    }
    system("pause");
    return 0;
}

这就是我想让程序做的,除非它会连续执行此操作

#include <stdio.h>
int main() {
    char myChar;

    printf("Enter any hex number: ");
    scanf("%x", &myChar);

    printf("Equivalent Char is: %c\n", myChar);

    system("pause");

    return 0;
}

任何帮助将不胜感激 谢谢你

最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(void) {
    int myChar;
    int counter = 0;
    char buff[3] = {0};

    while (EOF != (myChar = getchar())) {
        if(isxdigit(myChar)){
            buff[counter++] = myChar;
            if(counter == 2){
                counter = 0;
                myChar = strtol(buff, NULL, 16);
                putchar(myChar);
            }
        }
    }
    printf("\n");
    system("pause");
    return 0;
}

关于C编程十六进制转字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25752868/

相关文章:

c - Map<string, string> 在 C 中的实现

c++ - 如何修复 "no suitable conversion function from "字符串“到 "const char *"存在”?

c - 用C语言编写简单的字符表

python - 带有十六进制输入的 Python 中的 CRC32 校验和

c - Linux内核3. *系列在通过make-kpkg和gcc-4.8.5在Ubuntu 16.04.1中自定义编译后无法正常启动。

c - 以下代码的作用是什么?

C# 正则表达式和美元符号

javascript - 十六进制颜色代码的按位求补能否始终返回 6 个字符?

c - 从 Go 中读取 C 类型的字符串

c - 如何将 char ASCII 转换为 C 中的十六进制等价物?