2011-02-03 4 views
6

문자를 이진 표현으로 변환하는 간단한 방법은 무엇입니까?char를 binary로 변환하는 방법은 무엇입니까?

메시지를 다른 프로세스 (한 번에 한 비트 씩)에 보내려고합니다. 메시지가 "Hello"라면, 먼저 'H'를 바이너리로 변환 한 다음 순서대로 비트를 전송해야합니다.

어레이에 저장하는 것이 좋습니다.

의견을 보내 주셔서 감사합니다. 의사 코드 또는 실제 코드가 가장 도움이됩니다.

나는 이것에 대해 배워야 할 학교 과제에 대해 언급해야한다고 생각하는데 ... 신호에 대해 배울 수있는 흥미로운 방법 일뿐입니다. SIGUSR1은 0으로 사용되고 SIGUSR2는 1로 사용되며 요점은 한 프로세스에서 다른 프로세스로 메시지를 보내는 것입니다. 환경이 다른 통신 방법을 잠그고있는 것처럼 가장합니다.

+0

실제로 확인할 수 있습니다? –

+0

한 번에 하나의 이진수 만 보내시겠습니까? 왜? –

+0

잘 그 신호로 실제로 ... 내가 필요로하는 모든 문자의 이진 표현입니다. 그래서 아마도 int 배열을 제공하고 어떤 함수를 통해 이진이됩니다. 다음 배열을 통해 순환하고 각 비트를 보낼 수 있습니다. 이것은 상자 밖에서 사고하는 일종의 운동입니다. – Blackbinary

답변

14

각 비트마다 이동하여 비트를 얻으려면 로직 AND을 사용해야합니다. 예를 들어

for (int i = 0; i < 8; ++i) { 
    send((mychar >> i) & 1); 
} 

는 :

unsigned char mychar = 0xA5; // 10100101 

(mychar >> 0) 10100101 
& 1   & 00000001 
============= 00000001 (bit 1) 

(mychar >> 1) 01010010 
& 1   & 00000001 
============= 00000000 (bit 0) 

등등 ... 당신은 당신이 무엇을 기대의 예를 들어 줄 수

+0

'unsigned char'을 만들거나'>>'의 결과가 부의 피연산자에 대한 구현 정의 값을 가지기 때문에 값이 항상 양수가되도록해야합니다. –

+0

개정 됨! 고마워요 R. –

3

무엇에 대해 :

첫째, output로 최하위 비트를 c에서 비트를 기록
int output[CHAR_BIT]; 
char c; 
int i; 
for (i = 0; i < CHAR_BIT; ++i) { 
    output[i] = (c >> i) & 1; 
} 

.

+0

을 정확히 읽으면서 더 많은 것을 배울 수 있습니다. 나는 그것을 정확히 테스트 할 것입니다. – Blackbinary

관련 문제