Moo*_*oon 6 c++ string hex file
我有一个程序可以读取hex文件的 ,修改它,并将修改后的十六进制存储在std::string.
例如,我将如何将其写入文件
std::string wut="b6306edf953a6ac8d17d70bda3e93f2a3816eac333d1ac78";
Run Code Online (Sandbox Code Playgroud)
并获得它的价值
.0n..:j..}p...?*8...3..x
Run Code Online (Sandbox Code Playgroud)
在输出的文件中?
我不想使用sprintf,但我想如果有必要,我会做我必须做的。
如果我正确理解您的问题,您希望将文本转换为等效的数字,然后写入文件。鉴于您在问题中提供的提示,看起来应该逐字节完成。下面是实现这一目标的一种方法。请注意,需要将每个字节从字符串转换为整数值。
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
#include <ios>
std::string wut = "b6306edf953a6ac8d17d70bda3e93f2a3816eac333d1ac78";
int main()
{
std::ofstream datafile("c:\\temp\\temp1.dat", std::ios_base::binary | std::ios_base::out);
char buf[3];
buf[2] = 0;
std::stringstream input(wut);
input.flags(std::ios_base::hex);
while (input)
{
input >> buf[0] >> buf[1];
long val = strtol(buf, nullptr, 16);
datafile << static_cast<unsigned char>(val & 0xff);
}
}
Run Code Online (Sandbox Code Playgroud)