Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析二进制和ascii组合文件_Java_File_Utf 8_Binary_Hex - Fatal编程技术网

Java 如何解析二进制和ascii组合文件

Java 如何解析二进制和ascii组合文件,java,file,utf-8,binary,hex,Java,File,Utf 8,Binary,Hex,我有同时包含ASCII文本和二进制内容的文件 当我将该文件解析为UTF-8编码类型时 ASCII类型的部分是可读的,但二进制编码的部分不能读取 整个长度是正确的。因此,该文件的编码类型是UTF-8 但是如何通过java程序解析二进制编码的部分呢?您可以尝试读取1个字节并决定: -它是ASCII或UTF-8(如果大于127,则可能大于UTF-8) -如果是ASCII,则添加到字符串并重置状态 如果可能是UTF-8: 阅读第二部分:下一个字节。 如果最后2个字节是UTF-8,则添加到字符串并重置状态

我有同时包含ASCII文本和二进制内容的文件

当我将该文件解析为UTF-8编码类型时

ASCII类型的部分是可读的,但二进制编码的部分不能读取

整个长度是正确的。因此,该文件的编码类型是UTF-8


但是如何通过java程序解析二进制编码的部分呢?

您可以尝试读取1个字节并决定: -它是ASCII或UTF-8(如果大于127,则可能大于UTF-8) -如果是ASCII,则添加到字符串并重置状态

如果可能是UTF-8: 阅读第二部分:下一个字节。 如果最后2个字节是UTF-8,则添加到字符串并重置状态 如果不是可接受的UTF-8字符,则最后2个字符是二进制数据:添加到数据队列

处理下一个字节,直到文件结束

在这种情况下,您将拥有所有可能的ASCII和所有可能的UTF-8字符以及剩余的dor数据

当读取的字符在数据中时可能会出现这种情况,除非您有原始文件描述符,否则无法知道。比如: 在位置1000处启动数据块,直到。。。。pos 2000。 在位置2000开始,直到2500 ASCII字符串 等等

我希望这会有所帮助,视情况而定

将文件读取为二进制文件,可能是ByteBuffer文件,因此字节序列可能被提取为字符串


或者,如果您可以制作格式的语法,这也是可行的:将字节级别的关键字与
String.getBytes(“UTF-8”)
匹配。如果你真的想努力解决问题。

你的问题一点也不清楚。。。如果它是二进制的,为什么要读取它?如果它是一个二进制文件(),你就不能。我认为这不是utf8问题。但也许我错了告诉我们更多关于你已经做了什么和你想要什么什么什么?哦,那是个好主意!我对此一无所知!!文件的类型是UTF-8,一个数据的长度是1024字节,我只将该文件解析为ASCII类型的文件!!另一个选择是