C# dünyasından gelip Java üzerinde fırçalayarak, imzasız bayt/ints olmadığını öğrendim. Ben aşağıdaki örnekte olduğu gibi özel ikili mesajlar kurmak kolay yolu ne olduğunu bulmaya çalışıyorum: Gördüğünüz gibi, belirli tamsayı değerleri 3 bitlik yuvaya koymak gerekirJava'da özel ikili veri iletileri ayarlamanın en kolay yolu nedir?
. Diğer değerler ise tek bitli bayraklar veya diğer boyut alanlarıdır. Okuduklarımdan, bit bilge operatörlerini kullanarak tamsayılarda ikili bayt oluşturma gibi "bir sonraki büyük" ilkelde çalışmalıyım. Başka yollar var mı? Ben başka bir yerde gibi bulduğumuz bazı örnekler izlemiştir (Not: Bu örnek, yukarıdaki grafiği eşleşmiyor):
shiftedValue1 = (value1 & 0xFF) << 5;
shiftedValue2 = (Value2 & 0xFF) << 2;
shiftedValue3 = (Value3 & 0xFF) << 1;
shiftedValue4 = (Value4 & 0xFF);
finalvalue = (shiftedValue1 & 0xFF) | (shiftedValue2 & 0xFF) | (shiftedValue3 & 0xFF) | (shiftedValue4 & 0xFF);
bu bayt oluşturmak için daha iyi bir yolu var mı yapılandırılmış ilk byte alınır? 4 bayt alanları üzerinde ne kullanırım? Uzun?
Belki de clueless değilim, ama - imzasız değerler gibi bu tür alanları görüntüleme geleneğine rağmen, bunları imzalı değerler olarak işlemek herhangi bir gerçek sorun var mı? Eğer C# 'da, verilen bir byte alanını 0 ('' '') ile 255 ('FF') arasında bir aralıkta görüyorsanız, 0 ile 127 (' 00' - '' arasında bir aralıkta bir zararı var demektir. 7F ') ve -128 ila -1 ('80'den' FF''ye)? Çalıştığım yerde, bazı ortaklarımız/müşterilerimiz tam olarak bunu yapıyor; Bir C enumda '0x85' olarak görünen bir değer, bir XML özniteliğinde "-123" olarak görünecektir. Kulağa biraz tuhaf geliyor, ama hiçbir zaman sorun yaratmadı. – ruakh
Aslında bu yönde gitmeyi deneyebilirim ... – kuhnto