java - 如何在Java中用字节构建int值?

标签 java

我的问题是关于Java int数据结构。

如果我有一个 4 字节的缓冲区

byte[] buffer = {(byte)A, (byte)B, (byte)C, (byte)D};

如何使用此数组和逻辑运算符构建正整数和负整数值( &|<<>> )?

假设 int = 4 且 int = 130;以及-4和-130。

最佳答案

要从四个 8 位值构造 32 位值,您需要知道 Endianness

如果我们假设高位存储在第一个字节中,那么你可以这样做:

int v = 0;
for (int i=0; i<4; i++)
    v = (v<<8) | (buffer[i]&0xff);

如果高位存储在最后一个字节,则需要反向循环

int v = 0;
for (int i=3; i>=0; i--)
    v = (v<<8) | (buffer[i]&0xff);

关于java - 如何在Java中用字节构建int值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60344462/

相关文章:

java - 迭代类的映射并调用

java - 如何在单击时更改按钮背景

java - 以 3x3 模式排列屏幕

java - Spring OXM 不适用于 Struts 1

java - 无法使用录制的 mp3 作为 google 语音转文本 api 的输入..!

java - 使用 GetDefaultSharedPreferences - 在 Activity 之间重置 SharedPref 值

java - 使用 commons-beans BeanUtils 将 JavaBean 转换为具有嵌套名称的键/值映射

java - 嵌入式 Tomcat 不会在 AWS Elastic Beanstalk 中监听端口 80

java - 是否可以从与 HQL 的多对多关联中批量删除?

java - 我的 AppWidgetProvider 会在 onReceive 中从 3rd 方应用程序接收数据的可能原因是什么?