C++将带有十六进制字符的.txt转换为前面带有x的带有六进制字符的txt

C++ turning a .txt with Hexa characters to a .txt with hexa characters with x in front

本文关键字:字符 txt 前面 C++ 转换 十六进制      更新时间:2023-10-16

我想问C++中是否有一种方法可以将.txt文件转换为六位数,例如

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

到一个新的.txt与那个看起来

x0Ex1FxBAx0Ex00xB4x09xCDx21xB8x01x4CxCDx21x54x68x69x73x20x70x72"

我在谷歌上搜索了答案,但一无所获,并尝试了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;
}
write << "x" + hexaEnter;
//        ^^

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

这是因为想要做的是从字面上写字符和字符x,所以转义反斜杠以实现这一点:

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

顺便说一句,你的循环条件是错误的。