当仅支持有符号字节时,如何在 Java 中写入 .png 图像的第一个字节?

问题描述 投票:0回答:1

我正在开发一个项目,我想将数据写入 .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。

提前非常感谢!

java byte png unsigned signed
1个回答
0
投票

没关系。 137和-119具有相同的低八位。

© www.soinside.com 2019 - 2024. All rights reserved.