我有一个包含要以little-endian二进制格式读取的数据的文件。为了解析文件,我首先读取一个4字节的无符号整数,然后根据该整数的值,执行不同的读取例程。
使用ByteBuffer和this answer,我可以读取一个4字节的无符号int作为long。但是在我的代码中,我想使用switch语句,而java不允许使用long。
因为我只是检查是否相等,所以将4个字节作为有符号整数读取并将其与我的已知值进行比较就可以了。但是,我的参考值都被定义为无符号整数(例如0xc15ab354)。是否有一种很好的方法可以将这些转换为有符号的整数(是的,它可以手动完成,但这会引入错误的可能性)进行比较,还是更好的方法进行比较?
答案 0 :(得分:2)
这很简单。如果您只使用0xc15ab354
作为int
字面值,您将获得具有该精确二进制表示的带符号整数,因此您可以直接在switch
语句中使用它,就像它是