是否有一种将字符转换为二进制表示的简单方法?
我试图将消息发送到另一个进程,一次一个位。 因此,如果消息是“Hello”,我需要先将“H”变为二进制,然后按顺序发送这些位。
存储在数组中将是首选。
感谢您提供任何反馈,无论是伪代码还是实际代码都是最有帮助的。
我想我应该提到这是为了让学校的作业能够学习信号......这只是学习它们的有趣方式。 SIGUSR1用作0,SIGUSR2用作1,并且点是从一个进程向另一个进程发送消息,假装环境正在锁定其他通信方法。
答案 0 :(得分:13)
你只需为每个位循环进行一次移位并做一个逻辑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)
依旧......
答案 1 :(得分:3)
怎么样:
int output[CHAR_BIT];
char c;
int i;
for (i = 0; i < CHAR_BIT; ++i) {
output[i] = (c >> i) & 1;
}
将c
中的位写入output
,最低位先写入。{/ p>