我想以这种形式将短int x=0x4740写入二进制文件:0100 0000 0100 0111,当我在记事本中打开它时,它是@G。它正在工作。当我尝试编写例如短int a=0xf0ff;(二进制:1111 0000 1111 1111)时,记事本显示给我的不是我的数字二进制(➕是1100 1011 1001 1001 1100 0100 1001 0001)。如何在这个文件中编写它并获得1111 0000 1111 1111?
我正在使用此转换器:http://www.binaryhexconverter.com/binary-to-ascii-text-converter
int main() {
ofstream plik;
plik.open("D:\\book.dat", ios::binary);
if (!plik.good()) cout << "error";
short int x = 0xf0ff;
plik.write(reinterpret_cast<char*>(&x), 2);
plik.close();
system("pause");
return 0;
}
您的代码没问题。然而,使用记事本对二进制数据的解释并非如此。简而言之,在使用记事本查看文件时,不应将 Unicode 值用于非 ASCII 字符(如 đ)。
记事本以 8 位编码读取文件,使用(可能)在 Windows 区域和语言设置中配置的非 Unicode 程序的代码页。
现在,在windows-1250中(我猜这是在您的语言环境中配置的),ddo有代码0xf0,而˙有代码0xff。所以文件内容是0xff 0xf0,这正是您所期望的。
我建议使用一些更高级的工具来检查二进制文件的内容。
您的代码将正确地将该数字写入该文件,但您必须注意,在当今的大多数架构中,数字都存储在Little Endian中。
也就是说,short int x=0xf0ff
是
0xff0xf0
,而不是您可能预期的0xf00xff
。
如果您尝试使用十六进制编辑器打开文本文件,那么它确实包含
0xff 0xf0。这相当于二进制格式的
11111111110000(而不是
1111 0000 1111111)。
然后,文本编辑器将
0xff 0xf0
解释为•。
< br >现在,如果您想在文件中写入< code>1111 0000 1111 1111
,您必须“反向”写入数字或直接使用char数组:
短整数x=0xfff0
或char plik[]={0xf0,0xff};
请注意,并非所有架构都是小字节序,因此,如果您关心可移植性,建议使用 char 数组。
问题内容: 我有23位表示为字符串,并且需要将此字符串作为4个字节写入二进制文件。最后一个字节始终为0。以下代码有效(Python 3.3),但感觉不太好(我对Python和编程很陌生)。您有任何改善技巧吗?似乎for循环可能有用,但是如何在循环中进行切片而不出现IndexError?请注意,当我将位提取到一个字节中时,我会反转位顺序。 问题答案: 您可以将其视为int,然后按以下方式创建4个字节
我无法重写从二进制缓冲区获取的文件,我已与原始文件进行了检查,所有字节都相同。 这是从NodeJS创建的文件: 这是最初的一个: 你可以比较这两个文件,每个字节都是一样的,我猜NodeJS的编码不是正确的。 这是一段代码 你可以试着在你的节点上运行它,看看结果是错误的。 我能做些什么来修复它?
我想编程一个16/32位的EEPROM。我正在用C程序编写这个文件,但是似乎只执行8位?我写了一个简单的例子,使用xxd(和hextump)查看结果,但文件似乎只有8位。我想知道是否由于hexdump的限制,我只能看到8位 有人知道我如何检查所有的位都被写入文件吗? 使用xxd我看到: 编辑:我试图确保有32位写入文件。xxd的结果是: 其中显示有16位用于,但其他16位在哪里?理想情况下,我希望
我使用模块连接到返回PNG图像的php脚本。如果我这样做: 但是它在编写时给出了UnicodeEncodeError,所以我使用了而不是。文件已创建,但我无法在图像查看器中查看它(它会出错)。但是,如果我右键单击并在Firefox中保存该脚本返回的PNG,我可以在保存后在同一图像查看器中查看它。所以我猜我将图像数据写入文件的方式有问题。还有别的办法吗?
问题内容: 这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。 这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。 似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。 问题答案: 如果你正在读一个二进制文件,你应该 不 尝试把它当
问题内容: 输出文件包含: 问题出在哪里?如何使用写入文本文件? 问题答案: 你必须写String … 你可以试试。 要么 要么