繁体   English   中英

如何在C中将char ASCII转换为十六进制等值?

[英]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。 如何获取返回每个输入字符的十六进制值的方法?

在C语言中,char是一个8位有符号整数,您可以仅使用十六进制表示它。 在以下各行中,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]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM