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

时间:2015-05-24 04:47:05

标签: c++ char

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

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

这是我将char作为十六进制值(包括签名字符)的方法。它似乎工作得很好(据我所知),但我觉得这是一个非常愚蠢的方法。 我应该补充一下,我正在阅读一个文件,这就是为什么我的数据类型最初是char。

1 个答案:

答案 0 :(得分:1)

尽管使用intunsigned int一样有效,但您已经采用了正确的方法。如果您要在多个地方执行此操作,您可以创建一个函数或仿函数,例如:

int char_to_int(char ch)
{ 
    return static_cast<unsigned char>(ch);
}

// ...
 cout << hex << char_to_int(word[i]);

如评论中所述,另一个选项是word[i] & 0xFF,没有投射。这实际上是实现定义的,但很可能会给出预期的结果。但是,如果你将在几个地方做这件事,我建议把它包装在一个函数中,以便更明显地发生了什么。