当我向二进制文件写入数字时,它不会显示。但是在一个角色的情况下,它确实如此。为什么?你将如何检查包含字符的文件是否是二进制文件?检查文件数据是否为二进制文件
回答
它与你如何解释文件中的内容有关。文件中的所有内容都是二进制的,字符是整数等。
当您在文件(或CAT或任何操作系统具有)的控制台上执行TYPE时,文件的内容默认会被解释为文本,因为程序员类型的决定写它那样。
当您编写程序读取文件中的数据时,由您决定如何解读数据。
这就是为什么你只能猜测文件内容,这就是为什么经常使用文件扩展名来提示内容应该如何解释的提示。
所以我看到了ASCII字符,因为它们被记事本解释为字符(每个1 BYTE)。如果是整数(int),则其长度为4 BYTE。 – Gates127 2010-04-23 01:01:53
@ Gates127 - 如果您想将整数作为文本读取,您可能不希望将整数写入文件 - 您希望将该整数的文本表示写入文件。这是(使用你的数字),而不是写入值12,345,678(4字节),你想写“12345678”(8字节)。 – Damovisa 2010-04-23 01:05:30
我想我明白了,一个整数被保存为4个字节,它可能不存在于ASCII表中,所以记事本无法解释它。而ASCII字符的范围是从0到255. – Gates127 2010-04-23 01:15:11
我想你真正要问的是你(个人)是否可以解释文件中的内容。
正如安德斯所提到的那样,通常可以将文件读取为文本,而不管其内容是什么 - 然而,这些字符可能没有意义。
假设你正在编写软件来执行这项任务,或许下面(高级别)算法将帮助:
- 创建你找到文本
- 读取文件可接受的字符的列表,将其解释为ASCII
- 如果文件中的任何字符不在列表中,则失败。
- 对要处理的任何文本编码(ASCII,UTF-x等)重复步骤2和3
- 如果没有任何内容通过,则不是文本。
这有帮助吗?
好的,我相信我可以回答你的问题。数字在记事本中显示为垃圾的原因是因为您保存了一个整数值 - 保存ascii代码为0-9,其中包含时髦的字符与它们相关联。保存一个字符时,它会保存该字符的实际ASCII值(它将字符视为一个转换为其ASCII值的数字),然后该字符将显示为您希望看到的字符。
另一种方式把它是:
int(1) = 1
而
int('A') = 65
如何看它们之间的区别到编译器?
- 1. 如何检查文件是否是二进制文件?
- 2. 如何检查上传的文件是否是二进制文件?
- 3. STLloader和three.js - 如何检查文件是二进制文件?
- 4. 如何检查字符串是否在二进制文件
- 5. 用Node.js检查文件是二进制文件还是ASCII文件?
- 6. 将原始文件(二进制数据)转换为XML文件
- 7. ç打开文件来检查它是否是二进制的,如果是这样打印是二进制
- 8. 如何检查Vim插件中PATH中是否存在二进制文件?
- 9. 二进制数据到PDF文件
- 10. 写大二进制数据到文件
- 11. 追加二进制数据文件
- 12. 写回数据到二进制文件
- 13. 将二进制数据写入文件
- 14. 写的字符串二进制数据的二进制文件
- 15. 检测文件是二进制还是纯文本?
- 16. 为什么二进制NPM文件有两个检查
- 17. 检查文件是否完成复制
- 18. 是否可以查看一个和零个二进制文件?
- 19. 如何检查lldb是否可以附加到二进制文件?
- 20. 如何检查新的systemd用户是否有权执行二进制文件
- 21. 如何检索二进制文件的二进制版本号
- 22. 从二进制文件中检索contentType
- 23. 如何看到一个文件是否为cvs中的二进制文件
- 24. 我们是否需要部署二进制文件+(pdb文件+ xml文件)?
- 25. 检查文件是否被进程文件句柄锁定
- 26. 将二进制数据(例如二进制文件)导出为.NET字符串?
- 27. 从二进制文件,无感人物检索数据
- 28. 存储和检索数据库中的二进制文件(fpt)
- 29. 将二进制数据文件包含到APK文件中
- 30. 复制二进制文件
您如何查看数据以确定其显示方式? – 2010-04-23 00:49:27
用于检测文件是ASCII文本还是二进制文件(至少具有某种程度的置信度),请参阅此问题:http://stackoverflow.com/questions/277521/how-to-identify-the-file-content-is -in-ascii-or-binary#277538 – 2010-04-23 00:49:56
@Michael我正在使用记事本来查看它。 – Gates127 2010-04-23 00:51:44