![]() |
|
![]() |
#1 |
Trưởng lão PIC bang
|
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}; Code:
for (i=0; i<=8; i++) { if (x & mask[i]) a[i] = '1'; else a[i] = '0'; } Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 3 túi
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: Vietnam
Bài gửi: 48
: |
Trích:
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'; }
__________________
More friends more foods thay đổi nội dung bởi: kimhuynguyen, 17-04-2008 lúc 09:44 PM. Lý do: Sửa sai lỗi username namqn |
|
![]() |
![]() |
![]() |
#3 |
Trưởng lão PIC bang
|
Đúng vậy, for (i=0; i<8; i++) thì mới đúng. Tôi đã không kiểm tra cận.
Code đúng là tạo ra LSB nằm trước MSB, nhưng có thể in MSB trước hay sau đều được, tùy vào đoạn code in dữ liệu thôi. Tôi chỉ gợi ý cách giải quyết yêu cầu của thuật toán, còn thuật toán là do tác giả chọn. Việc chọn lựa giữa Code:
if (x & (0x80 shr i)) a[i] = '1'; else a[i] = '0'; Code:
if (x & mask[i]) a[i] = '1'; else a[i] = '0'; Bạn đã đánh sai username của tôi. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|