gpt4 book ai didi

c++ - 如何从字符中读取 ASCII 值并将其转换为十六进制格式的字符串

转载 作者:行者123 更新时间:2023-11-30 03:27:16 32 4
gpt4 key购买 nike

需要读取字符的值作为数字并找到对应的十六进制值。

#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) .从那里开始,无论您对更大的类型进行何种转换,它都将保持为负数。

要完全理解为什么必须知道如何做 two's complement有效。

基本上,-59192 具有相同的二进制表示:1100 0101,具体取决于以一种方式解释的数据类型或其他。当您使用十六进制格式打印它时,二进制表示(存储在内存中的实际值)是使用的,生成 C5

char 转换为 short/unsigned short 时,它会将 -59 转换为它的 short/unsigned short 表示,对于这两种情况都是 1111 1111 1100 0101 (FFC5)。

正确的做法是将初始值 (197) 存储到数据类型能够表示它的变量中 (unsigned char, short, unsigned short, ...) 从头开始​​。

关于c++ - 如何从字符中读取 ASCII 值并将其转换为十六进制格式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529033/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com