Рубрики
Без рубрики

Java – Преобразование байта[] в int и наоборот

– Java – Преобразование байта[] в int и наоборот

Автор оригинала: mkyong.

В Java мы можем использовать ByteBuffer для преобразования int в байт [] и наоборот.

int в байт[]

  int num = 1;
  // int need 4 bytes, default ByteOrder.BIG_ENDIAN
  byte[] result =  ByteBuffer.allocate(4).putInt(number).array();

байт[] в int

  byte[] byteArray = new byte[] {00, 00, 00, 01};
  int num = ByteBuffer.wrap(bytes).getInt();

1. int в байт[]

Этот пример Java преобразует int в массив байтов и печатает его в шестнадцатеричном формате.

package com.mkyong.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();
    }

}

Выход

Input            : 1
Byte Array (Hex) : 00000001

2. байт [] представлять

package com.mkyong.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();
    }

}

Выход

Byte Array (Hex) : 00000001
Result           : 1

Рекомендации

Оригинал: “https://mkyong.com/java/java-convert-byte-to-int-and-vice-versa/”