立即输入十六进制字符串作为char

时间:2013-01-14 10:38:37

标签: c++ hex

我有这样的字符串:

315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5

有没有办法立即从文件中读取它到字符串对象中,记住每2个字符是字节的十六进制表示?即我需要一个从十六进制转换为char的读数。

更新
伙计们,请仔细阅读我的要求 我能够编写转换函数并沿着字符串循环 但是我需要将一串十六进制的字符串读入一串字符一次
没有任何循环。不用手转换。
类似cin >> ...some string variable...的东西 感谢。

UPDATE2
想象一下,我有字符串"315c4eeaa8b5"。我想写一些类似cin >> string_var的内容,并获得完全包含"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'"的string_var。请注意,这最后是一个序数std::string。即0x31,0x5c,etc是字符代码 希望它让事情更清楚。

2 个答案:

答案 0 :(得分:1)

要么你编写代码,要么使用已经退出的东西。如果您正在使用C ++ IO流,那么我建议您查看Boost.IOStreams库,尤其是Filtering Streams概念。您可以使用展开2.2.5.2 input_filter教程示例的选项卡作为十六进制输入过滤器实现的基础。

答案 1 :(得分:0)

您可以使用istream :: opeartor>>使用std :: hex操纵器解析为十六进制:

ifstream in("...");
char buffer[3];
vector<char> chars;

while (in.read(buffer, 2))
{
    buffer[2] = '\0';

    char c;
    istringstream(buffer) >> hex >> c;
    chars.push_back(c);
}
相关问题