我正在做一个项目,使用Java将大型机的压缩十六进制数据转换为十进制/人类可读格式。但文件中的数据如下:
00011111112 201343 /…æ
&c ï% “* œ“fæ —æ r< Ìð
Œ êŒ000000 000000 q@00000000 ð
00011111112 201345 àr<
™ r< Ìð † Ë…ð Ë< Êð àã000000 000000 q00000000 @ %
00011111112 201346 Œ ì Ë…ð Ë< % é- ÅÇ …e* Äæ000000 000000 ræ00000000 @ Œ
我不知道如何使用Java将其转换为十进制格式。我正在使用`wing作为UI部分。
任何人都可以帮助并向我提供任何算法或工作代码吗?
这是一组示例数据的屏幕截图,其中第一行表示打包的十六进制数据。接下来的2行代表转换后的数据。
答案 0 :(得分:1)
您需要知道格式是什么,并使用字节。使用InputStream
而不是Reader
,请记住大型机可能使用EBCDIC而不是ASCII,并且mey $ DEITY可以帮助您灵魂。
严肃地说,你需要知道你想做什么的电线格式。首先找到它,它记录在某个地方。 (希望;它是一个大型机,所以谁知道)。
答案 1 :(得分:0)
也许你的意思是打包二进制编码的小数,BCD。
如您所知,一个字节是8位,可在基数16中表示,十六进制表示为两个十六进制数字0-9,A-F。 BCD现在将一个数字字符串编码为1234,一个十六进制字节为31,32,33,34的字符串,打包为12,34。
boolean fromBCD(byte ch) {
(ch & 0xF) < 10 && ((ch >> 4) & 0xF) < 10;
}
int fromBCD(byte ch) {
(ch & 0xF) + 10 * ((ch >> 4) & 0xF)
}