Java'da imzasız baytlarla çalışmak için eksiksiz kılavuz:
(Bu cevap için kaynak.)
Java Dili, unsigned
anahtar kelime gibi bir şey sağlamaz . Özelliğe byte
göre A değeri −128 - 127 arasında bir değeri temsil eder. Örneğin, byte
bir int
Java'ya yayınlanırsa ilk bit işaret ve kullanım işareti uzantısı olarak yorumlanır .
Bununla birlikte, hiçbir şey byte
basitçe 8 bit olarak görmenizi engellemez ve bu bitleri 0 ile 255 arasında bir değer olarak yorumlamaz. Sadece yorumunuzu başka birinin yöntemine zorlamak için yapabileceğiniz hiçbir şey olmadığını unutmayın. Bir yöntem a'yı kabul ediyorsa byte
, aksi belirtilmedikçe bu yöntem −128 ile 127 arasında bir değer kabul eder.
Size kolaylık sağlamak için birkaç yararlı dönüşüm / manipülasyon aşağıda verilmiştir:
İnt için / int'den dönüşümler
// From int to unsigned byte
int i = 200; // some value between 0 and 255
byte b = (byte) i; // 8 bits representing that value
// From unsigned byte to int
byte b = 123; // 8 bits representing a value between 0 and 255
int i = b & 0xFF; // an int representing the same value
(Veya Java 8+ kullanıyorsanız, kullanın Byte.toUnsignedInt
.)
Ayrıştırma / biçimlendirme
En iyi yol yukarıdaki dönüşümleri kullanmaktır:
// Parse an unsigned byte
byte b = (byte) Integer.parseInt("200");
// Print an unsigned byte
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
Aritmetik
2-tamamlayıcı gösterimi toplama, çıkarma ve çarpma için "sadece çalışır":
// two unsigned bytes
byte b1 = (byte) 200;
byte b2 = (byte) 15;
byte sum = (byte) (b1 + b2); // 215
byte diff = (byte) (b1 - b2); // 185
byte prod = (byte) (b2 * b2); // 225
Bölüm, işlenenlerin manuel olarak dönüştürülmesini gerektirir:
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));