TBytes'ten rastgele sayı bitlerini okumakla ilgili problemle karşılaştım. Öncelikle bu sorudan bir tavsiye aldım (ubitstream.pas ünitesini kullanma hakkındaki cevap): Handling arbitrary bit length data in Delphi? Benim örneğim: binaryfeed (TBytes) = (255, 0, 0, 0, 0, 6, 132, 1, 112) 128, 128, 130, 81);Delphi: TBitlerden X bitleri nasıl okunur?
- 8 bit okuyorum ve 255 olsun - tamam. Konum 8'dir.
- 24 bit okurum ve 0 - ok aldım. Pozisyon Sanırım nedenini anlayabileceği 0000 0000 0000 0110
başka 24 bit okuyup pozisyonu 56.
393216 olduğunu 393216 yerine 6'nın almak 32.
Bu "rasgele sayı bitleri", her zaman 8 bitlik bir kat mıdır? Eğer öyleyse, bayt okuyabilirsiniz. Bu büyük-endian ise, birden çok bayt tamsayılara benzer bir şeyle birleştirilir: 'value: = nextByte + value * 256; numBits: = numBits - 8; 'sayısı bitene kadar art arda. –
Gerçekten aradığınız 'bit access' ise (ki öyle görünmüyor, bkz. @ DavidHeffernan'ın cevabı), Delphi'nin System.Class sınıfındaki TBits sınıfına bir göz atmalısınız. –