2011-02-03 40 views
6

là có một cách đơn giản để chuyển đổi một ký tự thành biểu diễn nhị phân của nó?làm thế nào để chuyển đổi một char thành nhị phân?

Tôi đang cố gắng gửi thư đến một quy trình khác, mỗi lần một bit. Vì vậy, nếu thông điệp là "Xin chào", tôi cần phải lần đầu tiên biến 'H' thành nhị phân, và sau đó gửi các bit theo thứ tự.

Lưu trữ trong một mảng sẽ được ưu tiên.

Cảm ơn mọi phản hồi, mã giả hoặc mã thực tế sẽ hữu ích nhất.

Tôi nghĩ tôi nên đề cập đến điều này là để phân công trường học để tìm hiểu về tín hiệu ... đó chỉ là một cách thú vị để tìm hiểu về chúng. SIGUSR1 được sử dụng là 0, SIGUSR2 được sử dụng như 1, và điểm là gửi một thông điệp từ quá trình này sang tiến trình khác, giả vờ môi trường đang khóa các phương thức giao tiếp khác.

+0

bạn có thể đưa ra một ví dụ về những gì bạn mong đợi để thực sự được gửi? –

+0

Vì vậy, bạn chỉ muốn gửi một chữ số nhị phân duy nhất tại một thời điểm? Tại sao? –

+0

cũng với tín hiệu của nó thực sự ... tất cả tôi cần là đại diện nhị phân của một nhân vật. vì vậy có lẽ tôi cung cấp một mảng int, và thông qua một số chức năng, nó sẽ trở thành nhị phân. sau đó tôi có thể chu kỳ thông qua mảng và gửi từng bit. Đây là một loại tập thể dục trong suy nghĩ ra khỏi hộp. – Blackbinary

Trả lời

14

Bạn chỉ có vòng lặp cho mỗi bit thực hiện thay đổi và thực hiện một logic AND để nhận bit.

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

Ví dụ:

unsigned char mychar = 0xA5; // 10100101 

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

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

và vân vân ...

+0

Bạn nên làm cho 'unsigned char' hoặc khác đảm bảo rằng giá trị sẽ luôn luôn là dương, vì kết quả của' >> 'có giá trị được xác định thực hiện cho toán hạng âm. –

+0

Đã sửa đổi! Cảm ơn bạn R. –

3

gì về:

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

Đó viết các bit từ c vào output, ít nhất là bit quan trọng đầu tiên.

+0

đó chính xác là những gì tôi muốn, tôi sẽ kiểm tra nó. – Blackbinary

Các vấn đề liên quan