首页 > 解决方案 > 如何将 2 个字节从 byte[] 转换为 Char / short(2 个字节)?

问题描述

我的目标是将 2 个字节转换为一个字符。

输入将来自a,byte[]然后转换为char。我最初的策略是使用按位运算。

我的预期结果:0xFF << 8 | 0xFF等于 0xFFFF。确实如此。但是,实际上它不会因为在按位运算之前,我需要将数据存储在byte[].

我的实际结果:由于我访问数据的方式。(byte) 0xFF << 8 | (byte) 0xFF将等于-1。

byte[] bytes = new byte[]{(byte) 0xFF, (byte) 0xFF};

int integer = bytes[0] << 8 | bytes[1]; // -1 or 0xFFFFFFFF

标签: javabitwise-operators

解决方案


你需要:

int integer = (bytes[0] & 0xff) << 8 | (bytes[1] & 0xff);

这给出了 65535 的期望值。


推荐阅读