저는 바이트 값을 기반으로 트래버스해야하는 바이트 배열을 가지고 있습니다. 아래는 이것을위한 나의 코드입니다.바이트와 16 진수를 비교하십시오
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
}
}
내 문제는 내 기대에 따라 바이트 비교가 발생하지 않습니다.
내 바이트 배열의 값이 {31, -117, 8, 0 , -1}
이라고 가정하면 코드에서 해당 범위의 모든 음수 바이트 값을 감지 할 수 없습니다. 예를 들어. -117은 0x20
과 0xFE
사이 여야하지만 범위를 벗어나지는 않습니다.
바이트를 비교하기 위해 this answer을 추적했습니다. 나는 코드에서 무엇이 잘못되었는지 알 수 없다.
미리 감사드립니다.
'(byte) 0xFE'는 실제로'-2'입니다. –
바이트는 Java로 서명됩니다. 따라서 'b <= (byte) 0xFE'는 0xfe와 0xff의 두 값에만 해당됩니다. – EJP
@EJP 다음 두 범위에서 가능한 모든 바이트를 처리하도록 논리를 변경해야합니다 : '0x00-0x1f' 및'0x20-0xFE '. 미안하지만 질문이 아주 기본적인 것이지만 알아 내지 못했습니다. – Exception