为什么Java和VB.NET从文件读取的字节不同?

为什么Java和VB.NET从文件读取的字节不同?,java,android,vb.net,Java,Android,Vb.net,我读取文件.dat的数据 这是我在VB.NET中的代码: Dim data()为Byte=File.ReadAllBytes(“F:\test.dat”) 这是我在android中的代码: String fileName=Environment.getExternalStorageDirectory().getAbsolutePath()+“/data/test.dat”; 文件=新文件(文件名); byte[]writeBuf=新字节[(int)file.length()]; FileInp

我读取文件.dat的数据

这是我在VB.NET中的代码:

Dim data()为Byte=File.ReadAllBytes(“F:\test.dat”)
这是我在android中的代码:

String fileName=Environment.getExternalStorageDirectory().getAbsolutePath()+“/data/test.dat”;
文件=新文件(文件名);
byte[]writeBuf=新字节[(int)file.length()];
FileInputStream fis=新的FileInputStream(文件);
fis.读取(写入UF);
fis.close();
这些是结果:Java和VB.NET之间的某些字节是不同的


为什么Java和VB.NET之间的字节值不同?

看看这些值,似乎这只是一个有符号/无符号字节问题

有符号字节为-128到127(在Java上下文中使用),无符号字节为0到255(在.Net上下文中使用)

请注意,如果两个上下文中的数字不同,则如果将它们相加,则它们的总和为256(一个字节的最大值,无论有无符号)。(例如154+102=256和217+39=256)。因此,数据本质上是相同的,只是在给定受支持的数据类型范围时表示不同


Java没有无符号字节。

看看这些值,它似乎只是一个有符号/无符号字节问题

有符号字节为-128到127(在Java上下文中使用),无符号字节为0到255(在.Net上下文中使用)

请注意,如果两个上下文中的数字不同,则如果将它们相加,则它们的总和为256(一个字节的最大值,无论有无符号)。(例如154+102=256和217+39=256)。因此,数据本质上是相同的,只是在给定受支持的数据类型范围时表示不同


Java没有无符号字节。

在Java中,必须先将有符号字节转换为无符号字节,然后才能将字节转换为文本?@DavidCross如果您想为答案添加更多信息,请使用答案下方的链接。不过这次我已经为你编辑过了。你不需要转换任何东西(这是不可能的)。只需使用正确的类型(如utf-8)转换为文本即可。在java中,在将字节转换为文本之前,必须先将有符号转换为无符号?@DavidCross如果要向答案添加更多信息,请使用答案下方的链接。不过这次我已经为你编辑过了。你不需要转换任何东西(这是不可能的)。只需使用正确的类型(如utf-8)转换为文本。