Получить кодировку ASCII-6 в Java - PullRequest
       12

Получить кодировку ASCII-6 в Java

2 голосов
/ 07 сентября 2011

Я использую устаревший двоичный формат сообщений, для которого требуется последовательность символов в кодировке ASCII-6 (6 бит ascii). Я не смог найти определение для ASCII-6, но они определяют сопоставления символов в своей спецификации, начиная с A = 0x01, B = 0x02 и т. Д.

Мне интересно, существует ли в Java существующий набор символов для ASCII-6. Если нет, то можете ли вы как-то создать или определить свой собственный набор символов? Если нет, то есть ли лучшее решение, чем создание карты символов с кодированными значениями ascii-6?

Ответы [ 2 ]

3 голосов
/ 07 сентября 2011

Я не уверен, существует ли какая-либо 6-битная кодировка, где A - 0x01, B - 0x02 и т. Д., Но символы в большинстве 6-битных кодировок взаимозаменяемы с символами ASCII-7 посредством целочисленной арифметики. Например, символы в кодировке SIXBIT DEC можно изменить на символы ASCII-7 путем добавления 32 (основание 10) и наоборот, поскольку схема кодирования SIXBIT переносит только печатные символы в ASCII- Набор из 7 символов.

Реализация поддержки для такого преобразования с участием Byte s и Character s потребует от вас написать Charset и зарегистрировать его, используя CharsetProvider. Сложность состоит в отображении последовательностей из 6 битов в символы Юникода, поскольку Byte является наиболее фундаментальной единицей, с которой работают кодировки Encoders и Decoders. С другой стороны, если вы работаете с 6-битными кодированными символами, каждый из которых требует 8-битных символов, то указанная арифметическая операция становится простой, в противном случае вам нужно будет отслеживать, находится ли кодер / декодер в недопустимом состоянии.

2 голосов
/ 07 сентября 2011

Вы можете определить свою собственную кодировку символов, написав класс, расширяющий CharsetProvider, и сделав его доступным для вашего приложения. Например, JCharset делает это для некоторых менее используемых кодировок. Как я понимаю, даже они не поддерживают старые варианты ASCII, но вы можете увидеть, как это делается, изучив эту реализацию. Это не особенно сложно, просто несколько утомительно.

...