使用字符,我发现的唯一解决方案是static_cast两次。有没有办法解决这个问题?

Working with chars and only solution I've found is to static_cast twice. Is there a way around this?

本文关键字:有没有 两次 解决 问题 cast 字符 发现 static 解决方案 唯一      更新时间:2023-10-16

这段代码看起来有点荒谬,但这是我发现处理我的问题的唯一方法…

char word[10];
cout << std::hex << static_cast<int>(static_cast<unsigned char>(word[i]));

这是我将字符计数为十六进制值(包括带符号字符)的方式。(据我所知)这似乎很有效,但我觉得这是一种非常愚蠢的方法。我应该补充一下,我正在读取一个文件,这就是为什么我的数据类型最初是char

您已经在做正确的方式,尽管使用int将工作以及unsigned int。如果你要在几个地方这样做,你可以创建一个函数或函子,例如:

int char_to_int(char ch)
{ 
    return static_cast<unsigned char>(ch);
}
// ...
 cout << hex << char_to_int(word[i]);

如评论中所述,另一个选择是没有强制转换的word[i] & 0xFF。这实际上是实现定义的,但很可能会得到预期的结果。但是,如果您将在几个地方这样做,我建议将其包装在一个函数中,以便更明显地看到正在发生的事情。

相关文章: