kee*_*l89 5 python java tiff image
我有一个用Python编写的程序来查找TIFF IFD中的特定标记并返回值.它只是python中的概念验证,现在我需要将功能移到java.我想我可以使用String(byteArray[])
ASCII数据类型的构造函数,但我仍然需要获取Unsigned short (2 byte)
和unsigned long (4 byte)
值.我不需要将它们写回文件或修改它们,我需要做的就是从它们获取Java Integer
或Long
对象.这在使用struct
和mmap
类的python中很容易,在java中有没有人知道类似的方法?我查看了DataInput
该类,但该readUnsignedLong
方法读取了8个字节.
DataInputStream允许您读取short和long.您应该使用适当的位掩码(0xFFFF
简称0xFFFFFFFF
32位)对它们进行掩码,以便考虑有符号/无符号类型之间的差异.
例如
// omits error handling
FileInputStream fis = ...;
DataInputStream stream = new DataInputStream(fis);
int short_value = 0xFFFF & stream.readShort();
long long_value = 0xFFFFFFFF & stream.readInt();
Run Code Online (Sandbox Code Playgroud)
如果您确定数据不会朝向2字节字段的高端或4字节字段,则可以放弃位屏蔽.否则,您需要使用更宽的数据类型来解释无符号值比其签名对应值保留更大范围的值这一事实.