c++如何将字符转换为十六进制
c++ how to convert a character to hex
我知道当输出十六进制时,我可以使用
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作为你的新号码。如果你需要做一个以上的数字,你可以把它放在一个循环中。
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 在Arduino中将字符串转换为(逗号分隔的十六进制)字符串到无符号字符数组
- 将 std::string( "x3BxDEx7C" ) 转换为可读的十六进制字符串?
- 将十六进制转换为 DEC
- C++ 将十六进制字符串表示形式转换为十六进制字符串表示形式
- 字符数组到十六进制字符串的转换 - 意外输出
- C++将 wwn 字符串转换为识别为十六进制的数据类型
- 将字符串存储为十六进制而不进行转换
- 将字符串转换为十六进制数组c++
- 十六进制到十进制转换的未清理答案
- 是否有函数或公式可以在 c++ 中将字符串"of letters"转换为十六进制
- C++十六进制字符串转换为十六进制的字符 *
- 转换十六进制并存储为字节