2011-02-03 100 views
6

是否有將字符轉換爲二進制表示的簡單方法?如何將char轉換爲二進制文件?

我試圖發送消息到另一個進程,一次一個位。 所以如果消息是「你好」,我需要先把'H'變成二進制,然後按順序發送這些比特。

存儲在數組中將是首選。

感謝您的任何反饋,僞代碼或實際代碼將是最有幫助的。

我想我應該提到這是一個學校的任務,瞭解信號......這只是一個有趣的方式來了解它們。 SIGUSR1被用作0,SIGUSR2被用作1,並且要點是從一個進程向另一個進程發送消息,假裝環境正在鎖定其他通信方法。

+0

你能給的你所期望的一個例子來實際發送? – 2011-02-03 22:42:15

+0

所以你想一次只發送一個二進制數字?爲什麼? – 2011-02-03 22:42:55

+0

其實它的信號......我需要的只是一個角色的二進制表示。所以也許我提供了一個int數組,並通過一些函數,它變成了二進制。那麼我可以在數組中循環併發送每一位。這是一種開箱即用的練習。 – Blackbinary 2011-02-03 22:43:47

回答

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) 

等等...

3

什麼:

int output[CHAR_BIT]; 
char c; 
int i; 
for (i = 0; i < CHAR_BIT; ++i) { 
    output[i] = (c >> i) & 1; 
} 

c位第一寫入output,至少顯著位。