Java 中短值到字节数组的转换 -- 知识铺
通过学习 Spring 课程,开始使用 Spring 和 Spring Boot:
1. 引言
将短值转换为 byte[] 数组是 Java 编程中的常见任务,尤其是在处理二进制数据或网络通信时。
在本教程中,我们将探讨有效实现此转换的各种方法。
2. 使用 ByteBuffer 类 (Java NIO)
Java NIO 包提供了 ByteBuffer 类,该类简化了将原始数据类型转换为字节数组的过程。让我们来看看如何使用它来将短值转换为 byte[] 数组:
|
|
在这个方法中,我们使用 allocate() 方法分配一个容量为 2 字节的 ByteBuffer 来容纳 shortValue。接下来,我们利用 putShort() 方法将 shortValue 的二进制表示写入缓冲区对象。此操作将生成包含 shortValue 的字节表示形式的缓冲区。
然后,我们使用 array() 方法从缓冲区中提取名为 byteArray 的字节数组,该方法检索与存储的短值相对应的字节数组。
最后,我们使用 assertArrayEquals() 方法断言 byteArray 与 expectedByteArray 匹配,从而确保转换过程的准确性。
3.使用 DataOutputStream 类
另一种方法是利用 DataOutputStream 类,它提供了一种完成转换过程的有效方法。让我们看看如何实现这种方法:
|
|
在此测试方法中,我们首先利用 DataOutputStream 类将短值写入名为 baos 的 ByteArrayOutputStream 对象。
此外,我们调用 writeShort() 方法将 shortValue 序列化为表示其二进制形式的两个字节。随后,我们使用 toByteArray() 方法从 baos 中检索得到的字节数组。
4. 手动位操作
此方法通过显式操作短值的位来隔离和存储字节数组的相应位置,从而有效地将短值转换为字节数组。
让我们深入研究一下实现:
|
|
在这里,我们首先通过将 shortValue 右移 8 位(shortValue » 8)来提取 MSB,并将结果转换为一个字节以存储在 byteArray[0] 中。类似地,shortValue 的最低有效字节 (LSB) 是通过将其直接转换为字节然后将其存储在 byteArray[1] 中获得的。
5. 结论
总之,掌握在 Java 中将短值转换为 byte[] 数组对于各种任务至关重要。因此,我们探索了不同的方法,例如使用 Java NIO 的 ByteBuffer、手动位操作或利用 DataOutputStream。
与往常一样,本文的完整代码示例可以在 GitHub 上找到。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240505/Java-%E4%B8%AD%E7%9F%AD%E5%80%BC%E5%88%B0%E5%AD%97%E8%8A%82%E6%95%B0%E7%BB%84%E7%9A%84%E8%BD%AC%E6%8D%A2--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com