Mam tablicę 128 bajtów reprezentujących bity. Jak mogę przekonwertować te reprezentacje 128-bitowe na 16 bajtów?Jak mogę przekonwertować bity na bajty?
przykład:
mam tablicę, która wygląda następująco:
0110001100110000100010111011001011010011010001010001101101001100
1000010000000000001000111111111101000011111001111011111011111001
(Konwersja do 1 i 0 są bardziej zwięzły)
trzeba przekształcić te bity do następujących tablica bajtów:
99 48 139 178 211 69 27 76 132 0 35 255 67 231 190 249
EDIT: To nie wydaje się działać:
public byte[] ToByteArray() {
int numBytes = Count/8;
if (_bits.Count % 8 != 0) numBytes++;
byte[] bytes = new byte[numBytes];
int byteIndex = 0, bitIndex = 0;
for (int i = 0; i < _bits.Count; i++) {
if (_bits[i])
bytes[byteIndex] |= (byte)(1 << bitIndex);
bitIndex++;
if (bitIndex == 8) {
bitIndex = 0;
byteIndex++;
}
}
return bytes;
}
To Wyjścia:
198 12 209 77 203 162 216 50 33 0 196 255 194 231 125 159
można wyeliminować zmienną 'byteIndex' stosując (%) operatora modulo. bajtów [bitIndex% 8] – arul
@arul, podejrzewam, że myślałeś o podziałach całkowitych. Modulo będzie musiał być użyty po prawej stronie zadania. 'bajty [bitIndex/8] | = (bajt) (1 << (bitIndex% 8))' –