我有一些Perl代码想要转换成Java。
我有一个至少包含48个元素的字节数组。从位置44开始的是一个使用本地机器字节顺序的32位有符号整数。我希望将这些字节解压到一个int
中。
对于那些了解Perl的人来说,可以使用以下命令在Perl中获得该值:
my $SATsizeSectors = unpack("l", substr($header, 44, 4));
我正在使用下面的代码,但它给了我错误的输出:
InputStream is = new ByteArrayInputStream(binaryData.getBytes());
byte[] bArr = new byte[4];
int bytesRead = is.read(bArr);
ByteBuffer buf = ByteBuffer.wrap(bArr);
resultData = buf.getInt();
发布于 2018-12-18 05:14:01
如果你使用的是streams,DataInputStream
就是你想要的。
byte[] header = ...;
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(header));
dis.skipBytes(44);
int SATsizeSectors = dis.readInt();
但简单地使用下面的代码可能要简单得多:
byte[] header = ...;
int SATsizeSectors = ( ( header[47] >> 8 | header[46] ) >> 8 | header[45] ) >> 8 | header[44];
https://stackoverflow.com/questions/53810690
复制相似问题