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

  • Christian Atlas

    Christian At

    26 Mart 2009
  • krotoflik

    krotoflik

    26 ŞUBAT 2011
  • Mary Jane Tauyan

    Mary Jane Ta

    20 AĞUSTOS 2009