Java代码如何将byte[]和int互相转换呢?
下文笔者讲述字节数组和int之间互相转换的方法分享,如下所示
int转byte []
实现思路: int转byte[] int num = 1; // int need 4 bytes, default ByteOrder.BIG_ENDIAN byte[] result = ByteBuffer.allocate(4).putInt(number).array(); byte[]转int byte[] byteArray = new byte[] {00, 00, 00, 01}; int num = ByteBuffer.wrap(bytes).getInt();例:
int转byte []
package com.java265.nio; import java.nio.ByteBuffer; public class IntToByteArrayExample { public static void main(String[] args) { int num = 1; byte[] result = convertIntToByteArray(num); System.out.println("Input : " + num); System.out.println("Byte Array (Hex) : " + convertBytesToHex(result)); } // method 1, int need 4 bytes, default ByteOrder.BIG_ENDIAN public static byte[] convertIntToByteArray(int value) { return ByteBuffer.allocate(4).putInt(value).array(); } // method 2, bitwise right shift public static byte[] convertIntToByteArray2(int value) { return new byte[] { (byte)(value >> 24), (byte)(value >> 16), (byte)(value >> 8), (byte)value }; } public static String convertBytesToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte temp : bytes) { result.append(String.format("%02x", temp)); } return result.toString(); } }
byte []转换int
package com.java265.nio; import java.nio.ByteBuffer; public class ByteArrayToIntExample { public static void main(String[] args) { // byte = -128 to 127 byte[] byteArray = new byte[] {00, 00, 00, 01}; int result = convertByteArrayToInt2(byteArray); System.out.println("Byte Array (Hex) : " + convertBytesToHex(byteArray)); System.out.println("Result : " + result); } // method 1 public static int convertByteArrayToInt(byte[] bytes) { return ByteBuffer.wrap(bytes).getInt(); } // method 2, bitwise again, 0xff for sign extension public static int convertByteArrayToInt2(byte[] bytes) { return ((bytes[0] & 0xFF) << 24) | ((bytes[1] & 0xFF) << 16) | ((bytes[2] & 0xFF) << 8) | ((bytes[3] & 0xFF) << 0); } public static String convertBytesToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte temp : bytes) { result.append(String.format("%02x", temp)); } return result.toString(); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。