java - 为什么 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 的字节值不同?
解决方案
查看这些值,它似乎只是一个有符号/无符号字节问题。
有符号字节为 -128 到 127(在您的 Java 上下文中使用),无符号字节为 0 到 255(在您的 .Net 上下文中使用)。
请注意,如果两个上下文之间的数字不同,如果将它们相加,它们的总和为 256(无论有符号/无符号,一个字节的最大值数)。(例如 154 + 102 = 256 和 217 + 39 = 256)。因此,数据本质上是相同的,只是在给定支持的数据类型范围的情况下表示不同。
Java 没有无符号字节。
推荐阅读
- c# - 比较两个数字的相等性时出现意外错误
- c++ - 如何从类成员函数返回指针,例如 size_t * class :: function(); 并使用类析构函数 ~size_t*class::function();
- java - NetBeans 安装程序在“正在配置安装程序...”后以白屏关闭
- wso2 - WSO2 Identity Server 5.7.0 - 无法在主域下创建新角色
- python - Keras 二元分类器教程示例仅提供 50% 的验证准确度
- python - 将生成器与 tf.data 一起使用的最可扩展方式?tf.data 指南说 `from_generator` 的可扩展性有限
- sql - ORA-00979: 不是 GROUP BY 表达式 ORACLE
- java - 整数数组作为命令行参数以及其他命令
- python-3.x - Python 用 mplcursors 添加两个游标
- python - 如何按顺序将值附加到列表中的每个元组?