如何将十六进制转换为ASCII字符串
How to convert HEX to ASCII String?
我有一个十六进制字符串,并希望它在C/c++转换为ASCII字符串。我怎么才能做到这一点?
未使用的位置用#F填充。示例:数字字符串1234567需要写入16个预留位置(8字节)
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
HEX 1 2 3 4 5 6 7 F F F F F F F F F F F F F
输入:0x12 0x34 0x56 0x7f 0xff 0xff 0xff 0xff
输出:1234567
您在示例中显示的编码似乎是BCD。也就是说,一个字节可以存储2位数字。每个数字由4位表示。如果4位大于1001二进制(9十进制),那么您要将其解释为无效数字,我猜FF十六进制将被解释为空白。您可以使用位操作符访问字节中的每个小块:
//Let's say a byte of your input is stored as 'a'
char a = 0x15; //This is 15 BCD
//separate lower and upper nibble
char lower_nibble=a&0x0F;
char upper_nibble=(a&0xF0)>>4;
//convert to ASCII
if(lower_nibble > 9) lower_nibble =' '; //space
else lower_nibble = '0' + lower_nibble; //convert to ASCII
if(upper_nibble > 9) upper_nibble =' '; //space
else upper_nibble = '0' + upper_nibble; //convert to ASCII
std::cout<<"n A is: "<<upper_nibble<<" "<<lower_nibble;
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 如何找到串联ASCII和std::string的子字符串
- 在 C++ 中从 8 位 ASCII 字符创建 7 位 ASCII 文本字符串
- 编写具有非ASCII数据的std ::字符串
- URL 编码扩展的 ASCII 标准::字符串在 C++.
- c 字符串开始时ASCII值是什么
- 如何与C 字符串中的非ASCII字符一起工作
- 短(ASCII,每个字符 7 位)字符串存储和C++中的比较优化
- 尝试显示 ASCII 字符串,但它被截断
- 如何将二进制字符串转换为 ASCII 字符串
- Win32中的任何易于使用的哈希功能都可以放置ASCII字符串
- 如何强制用户/操作系统输入 Ascii 字符串
- 如何使用 Windows API WriteFile 将 ASCII 字符串写入文件
- 将BITSet转换为ASCII字符串
- 将 ASCII 字符串转换为 UTF-16,然后再将它们传递给 Windows API 函数
- 将无符号长字符串转换为ascii字符串
- 将IPv6地址转换为Internet标准点分十进制格式的ASCII字符串
- 将ASCII字符串转换为long long
- 如何将十六进制转换为ASCII字符串
- 将二进制字符串转换为ASCII字符串(C++)