我一直在使用图像来存储数据,因为通过Paint.net编辑二进制数据比大多数十六进制编辑器更加友好。
然而,我的一些数据是长整型。长整型在Java中是32位整数的两倍,即64位。如何将长整型转换为两个整数,并且更重要的是,在读取图像时如何将它们转换回长整型?由于Java没有无符号整数,整数或长整数的最高位是负数标志位,即使第32位(较低的整数/像素)在长整型中是普通位也是如此。
大多数将长整型转换为整数的方法也会丢弃上位比特,这些比特可能包含位(二进制)信息!
我的需求是:
- 将单个长整型转换为两个整数,以忠实地包含其位数据
- 将两个整数转换回一个长整型,以忠实地包含它们的位数据。