Ich habe eine Byte-Array, die ich durchlaufen muss und basierend auf dem Byte-Wert etwas tun. Unten ist mein Code dafür.Vergleichen Sie ein Byte und und hexadezimal
for (byte b:byteArray)
{
if(b>=(byte)0x00 && b<=(byte)0x1F)
{
//do something
}
else if(b>=(byte)0x20 && b <=(byte)0xFE)
{
//do something
}
else if(b ==(byte)0xFF)
{
//do something
}
}
Mein Problem der Byte-Vergleich passiert nicht wie erwartet.
Angenommen, die Werte in meinem Bytearray sind {31, -117, 8, 0 , -1}
, der Code, den ich habe, ist nicht in der Lage, alle negativen Bytewerte in ihrem jeweiligen Bereich zu erkennen. Für Beispiel -117 sollte zwischen 0x20
und 0xFE
liegen, aber es geht nicht um irgendeinen Bereich.
Ich habe this answer gefolgt, um Bytes zu vergleichen. Ich kann nicht herausfinden, was im Code falsch ist.
Vielen Dank im Voraus!
'(Byte) 0xFE' ist eigentlich' -2' –
Byte sind in Java signiert. 'b <= (byte) 0xFE' gilt daher nur für zwei Werte: 0xfe und 0xff. – EJP
@EJP Wie soll ich meine Logik ändern, um alle möglichen Bytes in den folgenden zwei Bereichen abzudecken: '0x00-0x1f' und' 0x20-0xFE'. Tut mir leid, wenn die Frage sehr einfach ist, aber ich konnte es nicht herausfinden. – Exception