Tôi cần phải tạo một gói dữ liệu 20 byte và gửi tải trọng tới phần cứng ngoại vi qua bluetooth.Làm thế nào để làm việc với các thao tác bit trong Swift?
Gói dữ liệu 20 byte này được chia thành 14 tập dữ liệu nội bộ, mỗi bit 11 bit, 6 bit cuối cùng phải là ký tự rỗng.
Do đó, Tổng số: 160 bit (20 byte) = 14 (bộ) * 11 (bit) + 6 (ký tự null)
Bit 11 một lần nữa chia thành 3 bộ 2 bit, 3 bit và 6 bit. Tuy nhiên nó không quan trọng đối với câu hỏi chính, tôi hiện đang có thể tạo 11 bit, bằng cách lấy 'Int16'. Tôi sẽ thực hiện thao tác dịch chuyển để lọc 11 bit, tôi biết điều đó.
Nếu tôi chỉ có một tập dữ liệu thì tôi phải điền tất cả 20 byte ngoại trừ 11 bit đầu tiên với ký tự rỗng, nếu hai tập dữ liệu thì tất cả ngoại trừ 22 bit phải là ký tự rỗng và tương ứng.
Vấn đề tôi đang gặp phải là tạo ra 160 bit tuần tự này bởi vì các bit lẻ là 11. Tôi đã nghĩ đến việc thực hiện thao tác 'Int' và làm shift (< <) và sau đó thực hiện bitwise OR (|) nhưng một Int là 64 bit.
Hiện tại tôi nghĩ việc lấy một mảng ký tự có kích thước cố định là 20 sẽ phù hợp với tình huống này. Mặc dù về mặt khái niệm tôi nghĩ đó là cách tốt nhất có thể, lập trình tôi không thể hình thành logic với tất cả các điều kiện để đạt được điều này. Tôi nghĩ rằng tôi cần phải đặt tất cả các logic trong một vòng lặp.
Bất cứ ai cũng có thể nói đó là cách phù hợp để đạt được điều này và hướng dẫn tôi giải quyết nó, nếu đây là cách tốt nhất. Hoặc chỉ ra bất kỳ cách nào khác nếu có.
Cảm ơn bạn đã mã chi tiết. Tôi đặt mã vào sân chơi và thử vài bài kiểm tra mẫu, nó hoạt động tốt và tôi cũng hiểu được mã hoàn chỉnh. Cảm ơn bạn rất nhiều lần nữa. :) –