我正在开发一个项目,我想将数据写入 .png 文件。每个 .png 文件包含的第一个字节的十进制值为 137。但问题是:Java 只支持有符号字节,因此将 137 转换为字节最终得到 -119!有什么办法可以解决这个问题吗?
我的意思是,使用按位 AND 将有符号字节转换为无符号 INT 很容易。但是如何将无符号值 137 转换为实际的字节对象呢?还是没关系?只要第一个字节是 10001001,无论该数字如何解释,文件是否仍会被识别为 .png?
我尝试简单地将 137 转换为一个字节:
byte[] pngIdentifier = {(byte) 137, 80, 78, 71, 13, 10, 26, 10};
我尝试过使用按位与:
byte[] pngIdentifier = {(byte) -119 &0xff, 80, 78, 71, 13, 10, 26, 10};
但是一旦 int 被转换回 byte,这两种方法都会导致 -119。
提前非常感谢!
没关系。 137和-119具有相同的低八位。