-2

我认为 int 和 byte[] 之间的转换非常简单,我尝试将一个值转换为 byte[],然后在其他函数中重新转换该值以获得 int。如,int x = 89;和 byte [] y;,铸造 y=(byte[])x,不起作用。我怎样才能做到这一点 ?我想要什么,例如:

                       in func1                          in func2
int x ;         x value is casted in the y        y is taken and x value is 
byte[] y;                                             extracted

       ------func1-----------  --------func2---------
       ^                    ^ ^                     ^
x = 33 ==feed into==> byte [] ===> extraction ===> 33 
4

2 回答 2

1

使用ByteBuffer

ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(0xABABABAB);
byte[] arr = b.array();

BigInteger类。

byte[] arr = BigInteger.valueOf(0xABABABAB).toByteArray();
于 2013-05-05T10:50:41.327 回答
0

在 Java 中不能使用类型转换来做这种事情。这些是转换,必须以编程方式完成。

例如:

    int input = ...
    byte[] output = new byte[4];
    output[0] = (byte) ((input >> 24) & 0xff);
    output[1] = (byte) ((input >> 16) & 0xff);
    output[2] = (byte) ((input >> 8) & 0xff);
    output[3] = (byte) (input & 0xff);

(有更优雅的方式来进行这种特定的转换。)

从 abyte[]到“其他东西”同样是一种转换……这可能会也可能不会,这取决于“其他东西”是什么。

要转换回 int:

    byte[] input = ... 
    int output = (input[0] << 24) | (input[1] << 16) | (input[2] << 8) | input[3]

此问答提供了其他方法来为int<->执行此操作byte[]Java integer to byte array

于 2013-05-05T10:51:15.460 回答