2009-04-20 29 views
2

私は7ビットのASCII文字を表す6ビットのセットを持っています。私が持っている6ビットのうち、正しい7ビットのASCIIコードを取得するにはどうすればいいですか?ちょうどゼロを追加し、ビットORを行う?C/C++:6bit ASCIIを7bit ASCIIに変換するには

ありがとうございました。

レナート

+0

詳細を入力する必要があります。あなたの6ビットデータはどこから来ますか? (LabViewかもしれない?) –

答えて

8

ASCIIはあなたが持っているもの「6ビットのASCII」ではない、本質的に7ビットの文字セットです。どのキャラクターがあなたのキャラクターセットを構成しますか?

char From6Bit(char c6) { 
    // array of all 64 characters that appear in your 6-bit set 
    static SixBitSet[] = { 'A', 'B', ... }; 
    return SixBitSet[ c6 ]; 
} 

脚注:最も簡単なデコードのアプローチは、おそらくのようなものである6ビット文字セットは、DEC-10のように、古い12月のハードウェア上でそれらのいくつかは非常に人気があった、6 36ビット・アーキテクチャを持っていましたビット文字は意味をなさない。

+1

Heh、多分それは同じように非標準的な "拡張ASCII"、 "契約ASCII"と反対の反対です。 – dreamlax

2

あなたの6ビット文字セットがどのように見えるか教えてください。標準はないと思います。

逆マッピングを行うための最も簡単な方法は、おそらくそうのように、ルックアップテーブルを使用することです:

static const char sixToSeven[] = { ' ', 'A', 'B', ... }; 

これはスペースが000001として(バイナリ)000000、資本Aとしてエンコードされていることを前提とし、そうです。

あなたの6ビット文字の1つでsixToSevenにインデックスを付け、ローカルの7ビット文字を戻します。

+1

実際には複数の6ビット文字標準が存在していました。 DECが言及されている。もともと5ビットの文字エンコーディング標準がありました:http://tamilelibrary.org/teli/history1.html –

0

もし私があなたに1ビットの価値を与え、それがWindows XPから取られたと主張すれば、OS全体を再構築できますか?

できません。あなたは情報を失ってしまった。 について何か知っていない限り、それを再構築する方法はありません。が失われました。たとえば、最上位ビットが切り捨てられていることが分かっている場合は、そのビットをゼロに設定し、文字の半分以上を正しく再構成しました。

6ビットエンコーディングで 'a'と 'z'がどのように表現されているか知っていれば、削除されたものを7ビット表現と比較して推測できます。

1

私が知っている唯一の最近の6ビットコードは、base64です。これは4つの6ビット印刷可能文字を使用して3つの8ビット値(6x4 = 8x3 = 24ビット)を格納します。

6ビットの値は、文字から引き出されている:これらの63つ(例えばUGF4)スルー値が0である

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/ 

3つの8ビット値を表すために使用されます。

UGF4 = 010100 000110 000101 111000 
    = 01010000 01100001 01111000 
    = Pax 

これはあなたのデータのエンコード方法であれば、どのように(または付属のライブラリで、多くの言語が内蔵エンコーダとデコーダを持っている)、それをデコードする方法を教えてくれるその周りのスニペットの多くがあります。ウィキペディアには良い記事がありますhere

でない場合、 base64の場合は、エンコード方式を調べる必要があります。いくつかの古いスキームでは、文字セット内のページを選択するためのシフトイン/シフトアウト(SI/SO)コードの他のルックアップ方法が使用されていましたが、通常のACSII文字ではなく拡張(たとえば、日本語DBCS) 。

2

なぜ古いDEC-10/20 SIXBITが得られるのか分かりませんが、それが何であれば32(10進数)を追加してください。 SIXBITはスペース(32)で始まるASCII文字を取ったので、SIXBIT文字に32を加えてASCII文字を取得するだけです。

関連する問題