2011-02-03 99 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,至少显著位。