Trích:
Nguyên văn bởi namqn
Như vậy có lẽ hàm trabang() của bạn có vấn đề. Thực ra để chuyển dữ liệu binary thành một chuỗi để hiển thị thì không cần làm cầu kỳ như bạn.
Bạn chỉ cần khai báo một bảng mặt nạ như sau:
Code:
byte const mask[8] = {1, 2, 4, 8, 16, 32, 64, 128};
Sau đó trong hàm trabang() (hay có thể đổi tên thành bin2ascii() cho chính xác hơn), bạn chỉ cần thực hiện:
Code:
for (i=0; i<=8; i++)
{
if (x & mask[i]) a[i] = '1'; else a[i] = '0';
}
Như vậy là mảng a[] sẽ chứa biểu diễn ASCII của số nhị phân x. Có lẽ bạn cần khai báo lại thành char a[8] cho thích hợp với đoạn code trên.
Thân,
|
Xin chào,
namqn xem lại có được không:
for (i=0; i<=8; i++)... --> i = 0, 1, 2, 3, 4, 5, 6, 7, 8 --> 9 bits
đúng ra phải là:
for (i=0; i<8; i++)
Và nữa, đoạn code trên sẽ tạo chuỗi có LSB trước MSB(?)
Có thể thực hiện đơn giản hơn như sau không:
Code:
for (i=0; i<8; i++)
{
if (x & (0x80 shr i)) a[i] = '1'; else a[i] = '0';
}
không cần phải lưu bảng tra.