将4字节无符号整数(来自文件)与java中定义的整数值进行比较

时间:2014-02-16 00:12:36

标签: java

我有一个包含要以little-endian二进制格式读取的数据的文件。为了解析文件,我首先读取一个4字节的无符号整数,然后根据该整数的值,执行不同的读取例程。

使用ByteBuffer和this answer,我可以读取一个4字节的无符号int作为long。但是在我的代码中,我想使用switch语句,而java不允许使用long。

因为我只是检查是否相等,所以将4个字节作为有符号整数读取并将其与我的已知值进行比较就可以了。但是,我的参考值都被定义为无符号整数(例如0xc15ab354)。是否有一种很好的方法可以将这些转换为有符号的整数(是的,它可以手动完成,但这会引入错误的可能性)进行比较,还是更好的方法进行比较?

1 个答案:

答案 0 :(得分:2)

这很简单。如果您只使用0xc15ab354作为int字面值,您将获得具有该精确二进制表示的带符号整数,因此您可以直接在switch语句中使用它,就像它是