java - java 与 python 结构相似的功能

标签 java python image tiff

我有一个用 Python 编写的程序,用于查找 TIFF IFD 中的特定标签并返回值。这只是 python 中的概念证明,现在我需要将功能转移到 java 中。我想我可以只对 ASCII 数据类型使用 String(byteArray[]) 构造函数,但我仍然需要获取 Unsigned short (2 byte)无符号长(4 字节) 值。我不需要将它们写回文件或修改它们,我需要做的就是从它们中获取一个 Java IntegerLong 对象。这在 python 中使用 structmmap 类很容易,有人知道 java 中的类似方法吗?我查看了 DataInput 类,但是 readUnsignedLong 方法读取了 8 个字节。

最佳答案

DataInputStream允许您阅读空头和多头。您应该使用适当的位掩码(简称为 0xFFFF,对于 32 位为 0xFFFFFFFF)来屏蔽它们,以解决有符号/无符号类型之间的差异。

例如

// omits error handling
FileInputStream fis = ...;
DataInputStream stream = new DataInputStream(fis);
int short_value = 0xFFFF & stream.readShort();
long long_value = 0xFFFFFFFF & stream.readInt();

如果您确定数据不会朝向 2 字节字段或 4 字节字段的高端,则可以放弃位屏蔽。否则,您需要使用更广泛的数据类型来说明无符号值比有符号值具有更大范围的值这一事实。

关于java - java 与 python 结构相似的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6111988/

相关文章:

python - 通过 CrawlerRunner 触发时,从 scrapy 抓取中检索已抓取的项目

c# - 如何使用 C# 将图像插入到 pdf 文档中?

Java在文本中搜索一个变量列表

performance - Java 是否将 new HashSet(someHashSet).contains() 优化为 O(1)?

java - 断言用户输入是大写字母

ios - 二进制图像 POST - iOS

java - 无法使用 Swing 将图像加载到 JTextArea

java - 为什么我可以实例化这个抽象类?

javascript - Django Rest 框架 + ReactJS : Whats wrong with my API?

python - 使用 Python(最好是请求)从 Binance API 获取 Candlestick/Kline 数据以获取 JSON Dat