java - 如何将 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
解决方案
你需要:
int integer = (bytes[0] & 0xff) << 8 | (bytes[1] & 0xff);
这给出了 65535 的期望值。
推荐阅读
- javascript - 使用拖放 api、vue 和画布的拖放拼图
- java - 反之亦然编码值及其变量
- javascript - 如何使用 JavaScript 实现函数管道,并抛出错误?
- assembly - 将无符号 64 位整数转换为双精度会给出奇怪的汇编代码
- python - PermissionError: [Errno 13] - 我在尝试使用来自 Github 的“brownie”包时在我的 Ubuntu/WSL 设置中遇到了这个错误
- javascript - 在 svelte 中将值从子级传递给父级 - 绑定指令的直觉
- api - 我不想清除柏树中的现金和饼干
- python - 如何在python中生成独特的彩色图像
- flutter - 按下时浮动操作按钮的奇怪背景形状
- java - 3D对象SceneView Sceneform android的CameraPreview