当我向二进制文件写入数字时,它不会显示。但是在一个角色的情况下,它确实如此。为什么?你将如何检查包含字符的文件是否是二进制文件?检查文件数据是否为二进制文件
回答
它与你如何解释文件中的内容有关。文件中的所有内容都是二进制的,字符是整数等。
当您在文件(或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. 如何检查HDFS文件是否包含二进制数据?
- 3. VB.Net - 检查文件是否是.NET二进制
- 4. 如何检查上传的文件是否是二进制文件?
- 5. STLloader和three.js - 如何检查文件是二进制文件?
- 6. 检查是否编译了“-static”的二进制文件
- 7. 如何检查字符串是否在二进制文件
- 8. 检查是否在二进制文件中使用提升
- 9. 用Node.js检查文件是二进制文件还是ASCII文件?
- 10. 如何检查文件是否是二进制文件并读取所有不是的文件?
- 11. 将原始文件(二进制数据)转换为XML文件
- 12. ç打开文件来检查它是否是二进制的,如果是这样打印是二进制
- 13. 如何检查Vim插件中PATH中是否存在二进制文件?
- 14. PHP函数检查文件是否为文本文件
- 15. 如何检测飞镖中的文件是否为二进制(非文本)?
- 16. 确定文件是二进制文件还是文本文件
- 17. 二进制数据到PDF文件
- 18. 追加二进制数据文件
- 19. 写回数据到二进制文件
- 20. 写大二进制数据到文件
- 21. 将二进制数据写入文件
- 22. 写的字符串二进制数据的二进制文件
- 23. 检查该文件中预先不是二进制收到钩
- 24. 检测文件是二进制还是纯文本?
- 25. 检查文件是否完成复制
- 26. 如何检查哪个#define被编译为二进制文件?
- 27. 为什么二进制NPM文件有两个检查
- 28. 是否可以查看一个和零个二进制文件?
- 29. 如何比较二进制文件以检查它们是否相同?
- 30. 如何检查新的systemd用户是否有权执行二进制文件
您如何查看数据以确定其显示方式? – 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