【问题标题】:Convert integer to unsigned byte array with java or android使用java或android将整数转换为无符号字节数组
【发布时间】:2016-10-13 09:23:59
【问题描述】:

嗨,我在 SO 中看到了许多将整数值转换为无符号字节数组的链接。但我无法弄清楚。我的转换如下

//在安卓中

int checksum=104396;

byte[] byteArray = GetBytesInt(checksum);

public static byte[] GetBytesInt(int value) {
        byte[] bytes = new byte[4];
        bytes[0] = (byte) (value >> 24);
        bytes[1] = (byte) (value >> 16);
        bytes[2] = (byte) (value >> 8);
        bytes[3] = (byte) (value);
        return bytes;
    }

在安卓中输出
[0,1,-105,-52]

//在c#中

uint CheckSum=104396;

byte[] byteArray=BitConverter.GetBytes(CheckSum)

where BitConverter is System method

c# 输出

[204,151,1,0]

我如何在 java 或 android 中获得此输出。我检查 java 8 和 Guava 是否返回相同的内容。

请帮我写一些代码

【问题讨论】:

  • Output in android。您没有发布输出的代码。
  • 我在代码下面提到了操作字节值
  • 没有。我当然已经看到了输出。但我要求您提供用于生成输出的代码。你是怎么打印出来的?
  • 你看到结果ok了吗? Java 和 C# 产生相同的结果。将 256 添加到 Android 中的负值。只是顺序不同。打印时应将每个字节值视为无符号。

标签: java c# android arrays bitconverter


【解决方案1】:

根据@greenapps 的建议,获取 LITTLE_ENDIAN 格式的字节数组解决了这个问题。

ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
byteBuffer.putInt((int) (value & 0xffffffffL));
byte[] array=Bytes.asList(byteBuffer.array())

在安卓中输出

[-52,-105,1,0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2013-06-18
    • 2012-02-17
    • 2012-05-10
    • 1970-01-01
    • 2023-04-01
    • 2014-03-28
    相关资源
    最近更新 更多