说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

怎样将一个能int值转变为四个byte?(big endian)请提供代码实例,谢谢!

编辑:说三道四文库 发布时间:2018-06-22 12:04
HTML文档下载 WORD文档下载 PDF文档下载
怎样将一个能int值转变为四个byte?(big endian)请提供代码实例,谢谢!
BigInteger.toByteArray()可以吗
class convert
{
static int[] _MoveX={0xff,0xff00,0x0ff0000,0xff000000};
static byte[] uintoBytes(int IntegerSize)
{
    byte Byte4Size[] = new byte[4];
    for(int i = 0 ;i<4;i++)
    Byte4Size[i] = (byte)((IntegerSize & _MoveX[i]) >> (i*8));
    return Byte4Size;
}
static int byte4toInt(byte[] Byte4Size)
{
   int integer = 0;
   for(int i = 0;i<4;i++){
int int_temp = 0;
int_temp= int_temp | ((int)Byte4Size[i] & 0xff);
integer = integer | (int_temp<<(i*8));
  }
  return integer;
}
}
int intX   = 10000;
byte byteY = (byte)intX;
//It is ok
int    i = 0x12345678;
byte[] b = new byte[4];

b[0] = new Integer(i & 0x000000FF).byteValue();
b[1] = new Integer((i & 0x0000FF00) >>> 8).byteValue();
b[2] = new Integer((i & 0x000000FF) >>> 16).byteValue();
b[3] = new Integer((i & 0x000000FF) >>> 24).byteValue();

Anyway, hope this will be of use.
to all:
大家的方法我晚上回去后都试试

to lgcheng(dragon):
一个字节是放不下超过256的数的吧!
to skyyoung(路人甲):
BigInteger.toByteArray()  不能总是将一个int值变为4个byte
to Dureek(普博):

为什么不是:
b[0] = new Integer(i & 0x000000FF).byteValue();
b[1] = new Integer((i & 0x0000FF00) >>> 8).byteValue();
b[2] = new Integer((i & 0x00FF0000) >>> 16).byteValue();
b[3] = new Integer((i & 0xFF000000) >>> 24).byteValue();
wow ... it's my fault ;]
Thanks :)
如果是负数,能用?>>>移位?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘