一次输入十六进制字符串作为char

Input hex strings as char at once

本文关键字:字符串 char 十六进制 输入 一次      更新时间:2023-10-16

我有一个这样的字符串:

315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5

是否有一种方法来读取它从文件一次到字符串对象记住,每2个字符是十六进制字节表示?也就是说,我需要一个从十六进制到字符转换的读数。

更新
各位,请仔细阅读我的要求。
我能写转换函数和循环沿着一个字符串。
BUT我需要立即将十六进制字符串读取为char字符串
没有任何循环。没有手工转换。
比如cin >> ...some string variable...
谢谢。

更新2
假设我有一根弦"315c4eeaa8b5"。我想写cin >> string_var这样的东西然后得到包含"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'"的string_var。请注意,最后一个是一个有序的std::string。例如,0x31,0x5c,etc是字符的代码。

要么编写代码,要么使用已经存在的东西。如果你正在使用c++ IO流,那么我建议你看看Boost。IOStreams库,特别是它的过滤流概念。您可以使用扩展2.2.5.2 input_filter教程示例的选项卡作为十六进制输入过滤器实现的基础。

您可以将istream:: operator>>与std::hex操纵符一起使用,以解析为十六进制:

ifstream in("...");
char buffer[3];
vector<char> chars;
while (in.read(buffer, 2))
{
    buffer[2] = '';
    char c;
    istringstream(buffer) >> hex >> c;
    chars.push_back(c);
}
相关文章: