java - কশন - জাভা সুইং




বাইট অ্যারে জাভা পূর্ণসংখ্যা (9)

আপনি apache-commons ব্যবহার করছেন

public static byte[] toByteArray(int value) {
    byte result[] = new byte[4];
    return Conversion.intToByteArray(value, 0, result, 0, 4);
}

আমি একটি পূর্ণসংখ্যা পেয়েছিলাম: 1695609641

যখন আমি পদ্ধতি ব্যবহার করি:

String hex = Integer.toHexString(1695609641);
system.out.println(hex); 

দেয়:

6510f329

কিন্তু আমি একটি বাইট অ্যারে চাই:

byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};

আমি কিভাবে এটা করতে পারি?


আমার চেষ্টা:

public static byte[] toBytes(final int intVal, final int... intArray) {
    if (intArray == null || (intArray.length == 0)) {
        return ByteBuffer.allocate(4).putInt(intVal).array();
    } else {
        final ByteBuffer bb = ByteBuffer.allocate(4 + (intArray.length * 4)).putInt(intVal);
        for (final int val : intArray) {
            bb.putInt(val);
        }
        return bb.array();
    }
}

এটি দিয়ে আপনি এটি করতে পারেন:

byte[] fourBytes = toBytes(0x01020304);
byte[] eightBytes = toBytes(0x01020304, 0x05060708);

সম্পূর্ণ শ্রেণী এখানে রয়েছে: https://gist.github.com/superbob/6548493 , এটি শর্টস বা লম্বা থেকে শুরু করে

byte[] eightBytesAgain = toBytes(0x0102030405060708L);

কেমন:

public static final byte[] intToByteArray(int value) {
    return new byte[] {
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}

ধারণা আমার নয় । আমি dzone.com কিছু পোস্ট থেকে এটি গ্রহণ করেছি।


ক্লাস org.apache.hadoop.hbase.util.Bytes একটি সহজে বাইট [] রূপান্তর পদ্ধতির গুচ্ছ আছে, তবে আপনি হয়তো এই উদ্দেশ্যে আপনার প্রকল্পে পুরো HBase জার যুক্ত করতে চাইবেন না। এটি বিস্ময়কর যে এ ধরনের পদ্ধতি কেবল জেডিকে থেকে AFAIK অনুপস্থিত নয়, তবে কমন্স আইওও এর মত সুস্পষ্ট লিবার থেকেও।


নিচের অংশগুলি অন্তত UDP এর উপর একটি int প্রেরণের জন্য কাজ করে।

int বাইট অ্যারে:

public byte[] intToBytes(int my_int) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutput out = new ObjectOutputStream(bos);
    out.writeInt(my_int);
    out.close();
    byte[] int_bytes = bos.toByteArray();
    bos.close();
    return int_bytes;
}

int বাইট অ্যারে:

public int bytesToInt(byte[] int_bytes) throws IOException {
    ByteArrayInputStream bis = new ByteArrayInputStream(int_bytes);
    ObjectInputStream ois = new ObjectInputStream(bis);
    int my_int = ois.readInt();
    ois.close();
    return my_int;
}

Guava ব্যবহার করে:

byte[] bytearray = Ints.toByteArray(1695609641);

byte[] IntToByteArray( int data ) {

byte[] result = new byte[4];

result[0] = (byte) ((data & 0xFF000000) >> 24);
result[1] = (byte) ((data & 0x00FF0000) >> 16);
result[2] = (byte) ((data & 0x0000FF00) >> 8);
result[3] = (byte) ((data & 0x000000FF) >> 0);

return result;
}

byte[] conv = new byte[4];
conv[3] = (byte) input & 0xff;
input >>= 8;
conv[2] = (byte) input & 0xff;
input >>= 8;
conv[1] = (byte) input & 0xff;
input >>= 8;
conv[0] = (byte) input;

integer & 0xFF

প্রথম বাইট জন্য

(integer >> 8) & 0xFF

দ্বিতীয় এবং লুপ ইত্যাদি জন্য, একটি preallocated বাইট অ্যারে মধ্যে লেখা। দুর্ভাগ্যবশত, একটি বিট নোংরা।





byte