26 HAZİRAN 2012, Salı
Nasıl Java bayt bir dizi başlatmak mı?
Java byte dizisi şeklinde bazı sabit değerler (olacak biçimde) saklamak için, ve bu statik bir dizi başlatmak için en iyi yolu ne olacağını merak ediyorum. Bu şu anda nasıl yaptığımı, ama daha iyi bir yolu olmalı gibi hissediyorum.
private static final byte[] CDRIVES = new byte[] { (byte)0xe0, 0x4f, (byte)0xd0,
0x20, (byte)0xea, 0x3a, 0x69, 0x10, (byte)0xa2, (byte)0xd8, 0x08, 0x00, 0x2b,
0x30, 0x30, (byte)0x9d };
private static final byte[] CMYDOCS = new byte[] { (byte)0xba, (byte)0x8a, 0x0d,
0x45, 0x25, (byte)0xad, (byte)0xd0, 0x11, (byte)0x98, (byte)0xa8, 0x08, 0x00,
0x36, 0x1b, 0x11, 0x03 };
private static final byte[] IEFRAME = new byte[] { (byte)0x80, 0x53, 0x1c,
(byte)0x87, (byte)0xa0, 0x42, 0x69, 0x10, (byte)0xa2, (byte)0xea, 0x08,
0x00, 0x2b, 0x30, 0x30, (byte)0x9d };
...
and so on
Daha az etkili olabilir, ama daha temiz görünecek kullanabileceğim bir şey var mı? örneğin:
private static final byte[] CDRIVES =
new byte[] { "0xe04fd020ea3a6910a2d808002b30309d" };
CEVAP
26 HAZİRAN 2012, Salı
Bir fonksiyonu byte[]
, hexa bir dize dönüştürme kullanarak yapabilir
byte[] CDRIVES = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");
İşlevi Convert a string representation of a hex dump to a byte array using Java? Dave L tarafından tanımlanan kullanmanızı öneririm
Maksimum okunabilirlik için Burada: İ Ekle
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i = 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
Character.digit(s.charAt(i 1), 16));
}
return data;
}
EÄŸer CDRÄ°VES izin verirsen static
final
, performans düşüşü ilgisi yoktur.
Bunu PaylaÅŸ:
Java nasıl bir dizi başlatmak için?...
Nasıl Java iki dizi bir arada olabilir...
Nasıl Java genel bir dizi oluşturmak i...
Kolayca Ayarlamak için bir Dizi Dönüşt...
Java nasıl insan okunabilir biçime bay...