我有要转换为Java的Perl代码。
我有一个至少包含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();
答案 0 :(得分:0)
如果您正在使用流,则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];