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
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.
Java bir İnputStream içine bir bayt di...
Nasıl xkcd komik tarzı grafikler yapab...
İnputStream Java bayt dizisi dönüştürm...
Java nasıl insan okunabilir biçime bay...
Bayt dosya[] Java...