2014-02-26 8 views
0

C에서 한 문자의 EBCDIC 값을 가져와야합니다. 어떻게해야할지 모르겠다. 먼저 ASCII 값을 가져 와서 EBCDIC 값을 가져와야합니까? 덕분에 사람이C에서 한 문자의 EBCDIC 값 얻기

당신이 문자 인코딩으로 EBCDIC를 사용하는 시스템에있는 경우

답변

2

, 당신은 이미 그것을 가지고 사용자 환경이 ASCII 하나이며, 당신은 단순히 EBCDIC 코드 포인트를 원하는

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

경우 단지 같은 두 테이블에서 구축 된 조회 테이블을 사용할 수 있습니다 : 8 비트 ASCII 문자를 사용하여 시스템에 대한

enter image description here enter image description here

룩업 테이블은 당신에게 EBCDIC 대구를 제공합니다 e 점은 다음과 같을 것입니다 :

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]; 
}; 
+0

시스템이 EBCDIC을 사용한다면'char'는 일반적으로/항상 unsigned char입니까? – chux

+0

감사합니다 @ paxdiablo. 조회 테이블을 사용하는 방법을 나에게 설명 할 수 있습니까? 나는 그것이 어떻게 작동하는지 실제로 알지 못한다. – entendezEJ