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

How to convert char ASCII to hex equivilent in C?

基本上,我正在编写代码通过微控制器控制 LCD。 (atmega 32) 我的主要方法中有以下内容:

unsigned char str1[9] = "It Works!";
sendString(str1);

这是我的 sendString 方法:

// Converts each char to hex and sends to LCD
void sendString(unsigned char *string){ 


    sendCommand(0x01); // Clear screen 0x01 = 00000001
    _delay_ms(2);
    sendCommand(0x38); // Put in 8-bit mode
    _delay_us(50);
    sendCommand(0b0001110); // LCD on and set cursor off
    _delay_us(50);

    //For each char in string, write to the LCD
    for(int i = 0; i < sizeof(string); i++){
        convertASCIIToHex(string[i]);
    }
}

然后sendString方法需要转换每个字符。这是我目前所拥有的:

unsigned int convertASCIIToHex(unsigned char *ch)
{
    int hexEquivilent[sizeof(ch)] = {0};

    for(int i = 0; i < sizeof(ch); i++){
        // TODO - HOW DO I CONVERT FROM CHAR TO HEX????
    }

    return hexEquivilent;
 }

那么我将如何进行转换?我对 C 完全陌生,学习很慢。当我在某处读到一个 char 实际上存储为 8 位 int 时,我有一种感觉我正在做这一切都是错误的。如何让我的方法 return 每个输入字符的 HEX 值?

在C语言中,一个char是一个8位有符号整数,可以直接用16进制来表示。在接下来的几行中,a、b 和 c 具有相同的值,一个 8 位整数。

char a = 0x30;  //Hexadecimal representation
char b = 48;    //Decimal representation
char c = '0';   //ASCII representation

我认为你需要的只是发送字符串的字符,而不需要转换为十六进制。一个问题是您不能使用 sizeof() 来获取字符串的长度。在 C 中,字符串以 NULL 结尾,因此您可以迭代它直到找到它。试试这个:

// Converts each char to hex and sends to LCD
void sendString(unsigned char *string){ 


    sendCommand(0x01); // Clear screen 0x01 = 00000001
    _delay_ms(2);
    sendCommand(0x38); // Put in 8-bit mode
    _delay_us(50);
    sendCommand(0b0001110); // LCD on and set cursor off
    _delay_us(50);

    //For each char in string, write to the LCD
    for(int i = 0; string[i]; i++){
        sendCommand(string[i]);
    }
}