Saya mendapat bilangan bulat: 1695609641
ketika saya menggunakan metode:
String hex = Integer.toHexString(1695609641);
system.out.println(hex);
memberi:
6510f329
tapi saya ingin array byte:
byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};
Bagaimana saya bisa membuat ini?
Jawaban:
menggunakan Java NIO's ByteBuffer sangat sederhana:
keluaran:
sumber
"0x%02X"
jika Anda selalu menginginkan dua karakter heksadesimal serta heksadesimal huruf besar, mis .System.out.format("0x%02X", (byte) 10)
Tampilan0x0A
.Bagaimana tentang:
Idenya bukan milikku . Saya telah mengambilnya dari beberapa posting di dzone.com .
sumber
>>>
daripada operator shift kanan>>
( docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html ) sehingga perilaku mungkin tidak seperti yang diinginkan / seperti yang diharapkan dengan angka yang sudah ditandatangani vs yang tidak ditandatanganiBigInteger.valueOf(1695609641).toByteArray()
sumber
BigInteger.toByteArray()
: "Array akan berisi jumlah minimum byte yang diperlukan untuk mewakili BigInteger ini ..."sumber
Menggunakan jambu biji :
sumber
sumber
sumber
Potongan di bawah ini berfungsi setidaknya untuk mengirim int melalui UDP.
int ke byte array:
array byte ke int:
sumber
Karena umumnya Anda ingin mengonversi array ini kembali ke int di lain waktu, berikut adalah metode untuk mengubah array int menjadi array byte dan sebaliknya:
Perhatikan bahwa karena propagasi tanda dan semacamnya, "& 0xFF ..." diperlukan saat mengonversi kembali ke int.
sumber
untuk byte pertama
untuk yang kedua dan seterusnya, menulis ke dalam array byte yang telah dialokasikan sebelumnya. Agak berantakan, sayangnya.
sumber
Kelas org.apache.hadoop.hbase.util.Bytes memiliki banyak metode konversi byte [] yang berguna, tetapi Anda mungkin tidak ingin menambahkan seluruh tabung HBase ke proyek Anda hanya untuk tujuan ini. Mengejutkan bahwa tidak hanya metode seperti itu yang menghilangkan AFAIK dari JDK, tetapi juga dari lib yang jelas seperti commons io.
sumber
Usaha saya:
Dengan itu Anda bisa melakukan ini:
Kelas penuh ada di sini: https://gist.github.com/superbob/6548493 , mendukung inisialisasi dari celana pendek atau panjang
sumber
Jika Anda menggunakan apache-commons
sumber