byte数组和int之间相互转化的⽅法
Java中byte数组和int类型的转换,在⽹络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送者接收的数据都是byte数组,但是int类型是4个byte组成的,如何把⼀个整形int转换成byte数组,同时如何把⼀个长度为4的byte数组转换成int类型。
⽅法⼀:
public static byte[] intToByteArray(int i) {
  byte[] result = new byte[4];
  // 由⾼位到低位
  result[0] = (byte) ((i >> 24) & 0xFF);
  result[1] = (byte) ((i >> 16) & 0xFF);
  result[2] = (byte) ((i >> 8) & 0xFF);
  result[3] = (byte) (i & 0xFF);
  return result;
}
public static int byteArrayToInt(byte[] bytes) {
int value = 0;
// 由⾼位到低位
for (int i = 0; i < 4; i++) {
  int shift = (4 - 1 - i) * 8;
  value += (bytes[i] & 0x000000FF) << shift;// 往⾼位游
}
return value;
}
字符串数组怎么转成byte
⽅法⼆:
此⽅法可以对string类型,float类型,char类型等来与 byte类型的转换
public static void main(String[] args) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try {
// int转换byte数组
dos.writeByte(-12);
dos.writeLong(12);
dos.writeChar('1');
dos.writeFloat(1.01f);
dos.writeUTF("好");
} catch (IOException e) {
e.printStackTrace();
}
byte[] aa = ByteArray();
ByteArrayInputStream bais = new ByteArray());
DataInputStream dis = new DataInputStream(bais);
// byte转换int
try {
System.out.adByte());
System.out.adLong());
System.out.adChar());
System.out.adFloat());
System.out.adUTF());
} catch (IOException e) {
e.printStackTrace();
}
try {
dos.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public class RandomUtil {
  public static byte[] intToByteArray(int i) {
  byte[] result = new byte[4];
  // 由⾼位到低位
  result[0] = (byte) ((i >> 24) & 0xFF);
  result[1] = (byte) ((i >> 16) & 0xFF);
  result[2] = (byte) ((i >> 8) & 0xFF);
  result[3] = (byte) (i & 0xFF);
  return result;
  }
  public static void main(String[] args) {
   int v = 123456;
    byte[] bytes = ByteBuffer.allocate(4).putInt(v).array();
   for (byte t : bytes) {
    System.out.println(t);
  }
    System.out.println("----- 分割线 -------");    byte[] bytes2 = intToByteArray(v);
    for (byte t : bytes2) {
      System.out.println(t);
    }
  }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。