1

我正在做一个项目,使用 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 行代表转换后的数据。

4

2 回答 2

1

您将需要知道格式是什么,并使用字节工作。使用InputStream和不使用Reader,请记住大型机可能使用 EBCDIC 而不是 ASCII,并且我的 $DEITY 可以帮助您的灵魂。

说真的,你需要知道你想要做什么的有线格式。首先找到它,它记录在某处。(希望;这是一个大型机,所以谁知道)。

于 2013-03-20T10:55:59.137 回答
0

也许你的意思是压缩二进制编码的十进制,BCD。

如您所知,一个字节是 8 位,以 16 为基数表示,十六进制为两个十六进制数字 0-9,AF。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)
}
于 2013-06-15T12:50:05.063 回答