2011-09-07 5 views
2

ASCII-6 (6 비트 ASCII) 인코딩의 문자 시퀀스가 ​​필요한 레거시 이진 메시지 형식을 사용하고 있습니다. ASCII-6에 대한 정의를 찾을 수 없지만 A = 0x01, B = 0x02 등으로 시작하는 스펙에서 문자 매핑을 정의합니다.Java에서 ASCII-6 인코딩 가져 오기

ASCII에 대해 java에 기존 문자 집합이 있는지 궁금합니다 -6. 그렇지 않다면 어떻게 든 자신 만의 문자셋을 만들거나 정의 할 수 있습니까? 그렇지 않다면 ascii-6로 인코딩 된 값으로 문자의 맵을 만드는 것보다 나은 해결책이 있습니까?

+1

각 문자가 6 비트를 사용하면 어떻게 8 비트 바이트로 패킹됩니까? 3 바이트마다 4 개의 문자가 있습니까? 자신 만의 변환기를 작성하는 것은 CharSet을 개발하는 것보다 간단합니다. –

+0

아니요, 그들은 모든 캐릭터가 8 비트가 아닌 6 비트로 패킹되기를 기대합니다. http://introcs.cs.princeton.edu/java/stdlib/BinaryOut.java.html과 같은 것을 사용하여 비 바이트 경계에서 내용을 처리 할 것입니다. 하지만 먼저 모든 문자를 ascii-6 인코딩으로 변환 한 다음 6 개의 중요하지 않은 비트를 작성해야합니다. 여기서는 미리 정의 된 문자셋을 사용하는 것이 가장 빠를 것이라고 생각했습니다. – kenen

+0

모든 데이터 스트림은 기본적으로 바이트 당 8 비트입니다. 다른 옵션은 없습니다. 6 비트 또는 16 비트처럼 보이게 만들 수 있지만이를 8 비트 스트림에 매핑하는 방법을 알아야합니다. 가장 간단한 지 결정하기 전에 CharSet에 대한 설명서를 읽으십시오. ;) –

답변

2

CharsetProvider 확장 클래스를 작성하여 응용 프로그램에서 사용할 수있게하면 사용자 고유의 문자 인코딩을 정의 할 수 있습니다. 예를 들어, JCharset은 덜 사용되는 일부 인코딩에 대해이 작업을 수행합니다. 비록 내가 볼 수 있듯이 그들은 오래된 ASCII 변형을 지원하지 않지만 구현을 연구함으로써 어떻게 완성되었는지를 알 수 있습니다. 특별히 어렵지는 않지만 다소 지루한 것입니다.

+0

JCharset을 다운로드 할 수 있습니까? 나에게 다운로드 링크는 http://www.freeutils.net/source/jcharset/에 링크되어있다. 시작한 곳은 – kenen

+0

예.하지만 먼저 체크 박스를 클릭하여 라이센스 조항에 동의해야한다. (아마도 자바 스크립트도 있어야한다. 사용 가능). –

+0

오, 내 회사 프록시가 자바 스크립트 파일을 차단하고있었습니다. 고마워, 내가 한번 살펴봐. – kenen

3

A가 0x01이고 B가 0x02 인 경우 6 비트 인코딩이 있는지 확실하지 않지만 대부분의 6 비트 인코딩의 문자는 정수 연산을 통해 ASCII-7 문자로 바꿔 쓸 수 있습니다. 예를 들어 SIXBIT DEC encoding의 문자는 ASCII-7 문자 집합의 인쇄 가능한 문자 만 SIXBIT 인코딩 체계에 전달하므로 32를 추가하여 ASCII-7 문자로 변경할 수 있으며 그 반대의 경우도 마찬가지입니다. Charset를 작성하고 CharsetProvider를 사용하여 등록 할 필요 Byte들과 Character들과 관련된 이러한 변환에 대한 지원을 구현

. 까다로운 부분은 Byte이 문자셋 EncodersDecoders이 작동하는 가장 기본적인 단위이기 때문에 6 비트 시퀀스를 유니 코드 문자로 매핑하는 것입니다. 반면, 각각 8 비트 와이드 문자를 필요로하는 6 비트 인코딩 문자에 대해 작업하는 경우에는 해당 산술 연산이 쉬워집니다. 그렇지 않으면 인코더/디코더가 잘못된 상태인지 여부를 추적해야합니다.

관련 문제