c++如何将字符转换为十六进制

c++ how to convert a character to hex

本文关键字:转换 十六进制 字符 c++      更新时间:2023-10-16

我知道当输出十六进制时,我可以使用

cout<<hex<<(unsigned int)(unsigned char)ch<<endl 

但是我使用从标准输入中得到一个字符

cin.read((char*)&ch , sizeof(unsigned char))

这次如何将ch更改为hex

cin.read((char*)&ch , sizeof(unsigned char));
cout << hex << (unsigned int)(ch) << endl;

应该起作用。

十六进制基本上只是一个数字,因此主要考虑的是检查字符是否为十六进制,然后执行基本的数学运算将其转换为二进制表示。

uint8_t constexpr NOT_HEX = -1;
uint8_t char_to_hex(char c) {
    if (c >= '0' && c <= '9') return c - '0';
    if (c >= 'a' && c <= 'f') return c - 'a' + 10;
    if (c >= 'A' && c <= 'F') return c - 'A' + 10;
    return NOT_HEX;
}

NB:如果十六进制是多字符十六进制数,则需要处理十六进制的位移位

如果您试图将单个字符转换为十六进制以进行数学运算,例如,您可以使用以下语句将ascii字符表示转换为实际数字:

char x = 'A';
int y = x;
if(y > 47 && y < 58)  //this covers 0-9
   y = y - 48;
else if (y > 64 && y < 71) // this covers A-F
   y = y - 55;

用y作为你的新号码。如果你需要做一个以上的数字,你可以把它放在一个循环中。