SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TotalSeminarsChannel

    TotalSeminar

    16 Mart 2010
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007
  • Videojug

    Videojug

    25 EKİM 2006