首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Java实现Perl的unpack方法功能

用Java实现Perl的unpack方法功能
EN

Stack Overflow用户
提问于 2018-12-17 15:33:44
回答 1查看 124关注 0票数 1

我有一些Perl代码想要转换成Java。

我有一个至少包含48个元素的字节数组。从位置44开始的是一个使用本地机器字节顺序的32位有符号整数。我希望将这些字节解压到一个int中。

对于那些了解Perl的人来说,可以使用以下命令在Perl中获得该值:

代码语言:javascript
复制
my $SATsizeSectors = unpack("l", substr($header, 44, 4));

我正在使用下面的代码,但它给了我错误的输出:

代码语言:javascript
复制
InputStream is = new ByteArrayInputStream(binaryData.getBytes());
byte[] bArr = new byte[4]; 
int bytesRead = is.read(bArr);
ByteBuffer buf = ByteBuffer.wrap(bArr);
resultData = buf.getInt(); 
EN

回答 1

Stack Overflow用户

发布于 2018-12-18 05:14:01

如果你使用的是streams,DataInputStream就是你想要的。

代码语言:javascript
复制
byte[] header = ...;

DataInputStream dis = new DataInputStream(new ByteArrayInputStream(header));
dis.skipBytes(44);
int SATsizeSectors = dis.readInt();

但简单地使用下面的代码可能要简单得多:

代码语言:javascript
复制
byte[] header = ...;

int SATsizeSectors = ( ( header[47] >> 8 | header[46] ) >> 8 | header[45] ) >> 8 | header[44];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53810690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档