将CString写入.bin文件

时间:2013-04-19 14:39:17

标签: c++ binaryfiles fwrite

我有一个带有'HEX'值的CString,看起来像这样:“0030303100314a”

现在我想将它存储到bin文件中,这样如果我用十六进制编辑器打开它,我们显示的数据就像字符串一样显示:00 30 30 30 31 00 31 4a

我无法正确准备数据。即使我使用“wb”模式,它也始终以标准ASCII保存。

提前致谢

2 个答案:

答案 0 :(得分:2)

确定你的误解是“wb”意味着所有输出都以'二进制'形式出现。这根本不是什么。有二进制输出操作,您应该以二进制模式打开文件以使用它们,但您仍然必须使用二进制输出操作。这也意味着您必须完成将十六进制字符转换为整数值的工作。

以下是我可以执行任务的方式

for (int i = 0; i + 1 < str.GetLength(); i += 2)
{
    int hex_value = 16*to_hex(str[i]) + to_hex(str[i+1]); // convert hex value
    fputc(hex_value, file);
}

static int to_hex(TCHAR ch)
{
    return ch >= '0' && ch <= '9' ? ch - '0' : ch - ('A' - 10);
}

答案 1 :(得分:0)

程序od将获取一个文件并将其转换为各种表示形式。例如,如果你说od -x myfile.bin,myfile.bin的内容将打印为十六进制字节,就像你正在寻找的那样。您可以让C ++也这样做,但也许更容易只是按照您想要的方式对数据进行后处理。