Bir bayt dizisi Java kullanarak bir hex dökümü dize gösterimine dönüştürmek? | Netgez.com
SORU
26 EYLÜL 2008, Cuma


Bir bayt dizisi Java kullanarak bir hex dökümü dize gösterimine dönüştürmek?

Bir bayt dizisine hex değerleri temsil eden uzun bir dize (bir dökümü), dönüştürmek için arıyorum.

Aynı soru burada yazan kişi daha iyi ifade edemezdim:

http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21062554.html

Ama dışarıda orijinal ederim cümle kendimce: sanırım bir dize "00A0BF" bunu istiyorum yorumlanan byte[] {0x00,0xA0,0xBf} ne yapayım?

Java bir acemi olduğumu ve Bigınteger kullanarak ve önde gelen hex sıfır kollayan sona erdi. Ama çirkin olduğunu düşünüyorum ve basit bir şey kaçırıyorum eminim...

CEVAP
26 EYLÜL 2008, Cuma


İşte, daha önce yayınlanan daha iyi olduğunu düşündüğüm bir çözüm

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;
}

Bir geliÅŸmedir nedenleri:

  • Sıfırları (Bigınteger aksine) ile güvenli ve negatif deÄŸerler byte (Bayt aksine.parseByte)

  • char[] bir Dize dönüştürmek veya her bayt için StringBuilder ve String nesneleri yaratmaz.

Eğer argüman için güvenli değilse assert veya özel durumları ile de kontrol değişkeni eklemek için çekinmeyin.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • MotoManTV

    MotoManTV

    10 Aralık 2009
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011