Как проанализировать byte [] (включая кодированные значения BCD) в Object в Java - PullRequest
1 голос
/ 10 февраля 2011

Я хотел бы знать, есть ли простой способ «привести» байтовый массив, содержащий структуру данных известного макета к объекту.Байт [] состоит из упакованных значений BCD, 1-байтовых целочисленных значений и символьных значений.Я получаю байт [] путем чтения файла с FileInputStream.

Люди, которые работали над системами IBM-Mainframe, сразу поймут, что я имею в виду - проблема в том, что я должен сделатьто же самое в Java.

Любые предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Нет, поскольку расположение объектов может варьироваться в зависимости от того, какую виртуальную машину вы используете, на какой архитектуре работает код и т. Д.

Полагаться на представление в памяти всегда было для меня хрупко ...

Я предлагаю вам взглянуть на DataInputStream - это будет самый простой способ анализа ваших данных, я подозреваю.

1 голос
/ 10 февраля 2011

Не сразу, но вы можете написать один довольно легко, если точно знаете, что обозначают байты.

Чтобы преобразовать упакованное в BCD число, вам нужно извлечь две закодированные цифры.Четыре младших бита кодируют самую младшую цифру, и вы получите это, используя 15 (1111 двоичное число).Четыре старших бита кодируют старшую цифру, которую вы получаете, сдвигая правильные 4 бита и используя 15.

Также обратите внимание, что у IBM, скорее всего, есть инструментарий, если вы именно это и делаете.Для IBM я ищу IBM Toolbox для Java jt400.

...