SORU
24 Kasım 2010, ÇARŞAMBA


Java işaretsiz bayt yapabilir miyiz

İmzasız imzalı bir bayt dönüştürmek için çalışıyorum. Sorun imzasız ve Java alıyorum veri işaretsiz bayt desteklemiyor, veri okuduğunda imzalı olarak değerlendirir.

Bu Yığın Taşması aldığım aşağıdaki çözüm ile dönüştürmeye çalıştım.

public static int unsignedToBytes(byte a)
{
    int b = a & 0xFF;
    return b;
}

Ama bayt dönüştürülür. yine aynı imzalanan veri alıyorum. Parametre olarak sadece bir bayt kabul eden Java bir fonksiyonu parametre olarak bu verileri kullanmaya çalışıyorum, herhangi bir veri türü kullanamam. Bu sorunu nasıl düzeltebilirim?

CEVAP
24 Kasım 2010, ÇARŞAMBA


Aslında bu temel öğelerdir imzalanmış Java alakasız nasıl onlar temsil hafıza / transit - Bir bayt sadece 8 bit ve olup olmadığını yorumlamak olarak imzalı bir dizi ya da değil. Demek sihirli bayrağı yok "bu imzalı" ya da "bu imzasız".

İlkel imzalanmış olarak Java derleyicisi byte değeri 127'den daha yüksek onay kutusunu seçin (veya) -128 daha düşük önleyecektir. Ancak, bunu başarmak için bir tamsayı (ya) kısa downcasting seni durdurmak için hiçbir şey yok:

int i = 200;
byte b = (byte)200;

// Will print a negative value but you could *still choose to interpret* this as  200.
System.err.println(b); 

// "Upcast" to short in order to easily view / interpret as a positive value.
// You would typically do this *within* the method that expected an unsigned byte.
short s = b & 0xFF;
System.err.println(s); // Will print a positive value.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blendtec

    Blendtec

    30 EKİM 2006
  • Fuse

    Fuse

    21 Kasım 2005
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011