将CString写入.bin文件



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

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

我没有正确准备数据。它总是保存在标准ASCII,即使我使用"wb"模式。

Thanks in advance

好吧,你的误解是"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);
}

程序od将获取一个文件并将其转换为各种表示形式。例如,如果您输入od -x myfile.bin, myfile.bin的内容将被打印为十六进制字节,就像您正在寻找的那样。您也可以使用c++来完成此操作,但也许直接对数据进行后处理以使其看起来像您想要的那样更容易。

相关内容

最新更新