如何从字符中读取ASCII值并将其转换为十六进制格式的字符串
How to read ASCII value from a character and convert it into hexadecimal formatted string
需要读取字符的值为数字,并为此找到相应的十六进制值。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
char c = 197;
cout << hex << uppercase << setw(2) << setfill('0') << (short)c << endl;
}
输出:
ffc5
预期输出:
c5
问题是,当您使用char c = 197
时,您正在溢出char
类型,产生负数(-59
)。从那里开始,您对较大类型进行哪种转换都会保持负数。
充分了解为什么您必须知道两者的补充是如何工作的。
基本上,-59
和192
具有相同的二进制表示:1100 0101
,具体取决于以一种或另一种方式解释的数据类型。当您使用十六进制格式打印它时,二进制表示(存储在内存中的实际值)是使用的,生产C5
。
当char
转换为short
/unsigned short
时,它将-59
转换为short
/unsigned short
表示,即两种情况下的1111 1111 1100 0101
(FFC5
)。
正确的方法是将初始值(197
)存储到一个可以从一开始就可以表示数据类型(unsigned char
,short
,unsigned short
,...)的变量。
相关文章:
- 如何将包含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++十六进制字符串转换为十六进制的字符 *
- 转换十六进制并存储为字节