Pobieram dane z bajtów pliku .txt przez bajt przy użyciu delphi. Dla każdego bajtu muszę zamienić początkowy i końcowy bit tego bajtu. Szukałem google od wielu godzin, ale nie mogę znaleźć odniesienia do manipulowania bitami wewnątrz bajtów vars w delphi. Jakieś pomysły?Manipulowanie bitami bajtów vars w Delphi
Odpowiedz
b := (b and $7E) or (b shr 7) or (b shl 7);
Najpierw zachowujemy środkowe 6 bitów, a następnie zamieniamy bity MSB i LSB w operacjach zmiany rejestru.
Obsługa bitów w Delphi to dobra zabawa. Istnieje wiele opcji i jest to proste rozwiązanie. David proponuje rozwiązanie LUT, które może być szybsze (tylko odrobinę).
Było interesujące podobne pytanie o odbijaniu bitów całego bajtu, zobacz How can I bit-reflect a byte in Delphi?
.
To jest * rozwiązanie *. Pierwszym operandem jest b bez jego MSB i LSB, drugi operand jest początkowym MSB (teraz w pozycji LSB), podczas gdy trzeci operand jest początkowym LSB (teraz w pozycji MSB). Oczywiście wynikiem 'lub'ed jest' b' z zamianą MSB-LSB. –
Ponadto, jeśli chcesz przejść do tabeli sprawdzającej, możesz użyć jednego liniowca powyżej, aby wygenerować ten stół! –
Doskonała odpowiedź od LU RD! Dzięki za wyjaśnienie Andreas! – HHH
Najszybszym sposobem jest użycie tabeli odnośników –