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

  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • Photoshop Pro Help

    Photoshop Pr

    1 Ocak 2007
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006