tôi cần phải giải nén chút nào đó dao động từ với một giá trị lâu, ví dụ:Java có được dãy bit từ một lâu
long input = 15367 (11110000000111)
Những gì tôi cần để sau đó làm là để trích xuất hai giá trị dài từ bản gốc dài,
First long is 5 bits starting from bit 0, so bits 0:4 = 7 (0111)
Second long is 56 bits starting from bit 8, so bits 7:55 = 60 (1111000)
tôi biết điều này có thể được thực hiện với chút thay đổi và tạo mặt nạ, tuy nhiên tôi không hoàn toàn chắc chắn làm thế nào để thực hiện điều đó vì vậy nó năng động mỗi lần, vì mỗi khi tôi cần phải làm điều này, dài sẽ khác nhau và các dải bit cụ thể cũng vậy.
Tôi đã đọc về BitSets và BitArrays, tuy nhiên tôi không hoàn toàn chắc chắn đây là những điều phù hợp cho công việc.
Bất kỳ lời khuyên nào về cách tốt nhất để thực hiện điều này sẽ được đánh giá cao.
Cảm ơn!
Chỉ cần vé, nhờ FGE! – Tony
Sẽ không '' 'làm việc tốt vì' & 'cuối cùng sẽ loại bỏ dấu mở rộng' 1 '? (góc trường hợp có lợi cho bạn: bạn trích xuất các bit bên ngoài giới hạn ngoài cùng bên trái của đầu vào, ví dụ: nrBits = 32, offset> 32) – zapl
Không, nó sẽ không. Nói (với 8 bit để đơn giản hóa) bạn có '10001111' và muốn trích xuất ba bit bắt đầu tại offset 3: nếu bạn sử dụng' >>> ', shift phải cho' 00010001', nhưng với '>>' nó sẽ cung cấp cho '11110001' (bit dấu được thực hiện). – fge