0

C で文字の EBCDIC 値を取得する必要があります。方法がわかりません。最初に ASCII 値を取得してから、そこから EBCDIC 値を取得する必要がありますか? ありがとう

4

1 に答える 1

3

文字エンコーディングとして EBCDIC を使用するシステムを使用している場合は、既にそれを使用しています。

char xyzzy = 'A'; // xyzzy is now 0xc1

環境が ASCII であり、単に EBCDIC コード ポイントが必要な場合は、次のように、両方のテーブルから構築されたルックアップ テーブルを使用できます。

ここに画像の説明を入力 ここに画像の説明を入力

8 ビット ASCII 文字を使用して EBCDIC コード ポイントを取得するシステムのルックアップ テーブルは次のようになります。

int ebcdicCodePont (unsigned char asciiVal) {
    static int lookup[] = {
        /* 0x00-07 */   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        /* 0x08-0f */   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        :
        /* 0x20-27 */ 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
        :
        /* 0x48-4f */ 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
        :
        /* 0x78-7f */ 0xa7, 0xa8, 0xa9,   -1, 0x45,   -1,   -1, 0x07,
    };
    if (asciiVal > 0x7f)
        return -1;
    return lookup[asciiVal];
};
于 2014-02-26T06:37:23.683 に答える