首页 > 解决方案 > 为什么 Java 和 VB.NET 从文件中读取的字节不同?

问题描述

我读取了 file.dat 的数据。

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

Dim data() As Byte = File.ReadAllBytes("F:\test.dat")

这是我在android中的代码:

String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/data/test.dat";
File file = new File(fileName);
byte[] writeBuf= new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(writeBuf);
fis.close();

这些是结果:Java 和 VB.NET 之间的某些字节不同

在此处输入图像描述

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

标签: javaandroidvb.net

解决方案


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

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

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

Java 没有无符号字节。


推荐阅读