如何将int转换为byte []并重新生成byte []中的值

时间:2013-05-05 10:46:47

标签: java

我认为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 

2 个答案:

答案 0 :(得分:1)

使用ByteBuffer

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

BigInteger上课。

byte[] arr = BigInteger.valueOf(0xABABABAB).toByteArray();

答案 1 :(得分: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);

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

byte[]转到“别的东西”同样是一种转换......根据“别的东西”的不同,这可能是也可能是不可能的。

转换回int:

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

此Q&amp; A为int&lt; - &gt;提供了其他方法。 byte[]Java integer to byte array