C ++将带有Hexa字符的.txt转换为带有前面带有\ x的六边形字符的.txt

时间:2016-04-17 13:26:02

标签: c++ hex

我想问一下C ++中是否有一个方法来转换带有六位数的.txt文件,例如

0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 69 73 20 70 72

到一个新的.txt看起来

\x0E\x1F\xBA\x0E\x00\xB4\x09\xCD\x21\xB8\x01\x4C\xCD\x21\x54\x68\x69\x73\x20\x70\x72"

我在谷歌中搜索了答案,但没有找到任何内容,并在C ++中尝试了一个脚本但是没有使用错误消息" 24 11 \ x使用没有后续的十六进制数字"

#include <iostream>
#include <fstream>
#include<vector>

using namespace std;


int main()
{

string hexaEnter;
ifstream read;
ofstream write;

write.open ("newhexa.txt",std::ios_base::app);

read.open("hexa.txt");

while (!read.eof() )
    {

    read >> hexaEnter;

    write << "\x" + hexaEnter;

    }
write.close();
read.close();

system("pause");
return 1;
}

1 个答案:

答案 0 :(得分:1)

write << "\x" + hexaEnter;
//        ^^

这里,C ++看到十六进制转义序列的开头,如\x0E\x1F,但它找不到实际的十六进制值,因为你没有提供任何值。

那是因为你想要做的事情是字面上写下字符\和字符x,所以请使用反斜杠来实现这​​一点:< / p>

write << "\\x" + hexaEnter;
//        ^^^

另外,your loop condition is wrong