![]() |
6-bit Ascii String
Hallo Leute,
ich habe da nochmal was wobei ihr mir helfen könnt. Ich habe in ![]() Ich bekomme an einer Stellen einen "packed" (6-bit) Ascii String zurück. Beispiel: Antwort vom Gerät: FF binär: 11111111 Die ersten sechs Bit ist das erste Zeichen (3F). Es ergibt sich also das Zeichen "?". Kann man das etwas elegenter lösen als jedes bit einzeln anzufassen. Gibt es da wieder einen Trick mit dem man sich behelfen kann? Gruß Matthias |
Re: 6-bit Ascii String
Hallo Matczek,
Delphi-Quellcode:
Grüße vom marabu
var
c: char; s: string; begin s := 'FF'; c := Chr(StrToInt('$' + s) shr 2); end; |
Re: 6-bit Ascii String
oder auch:
Delphi-Quellcode:
Greetz
Function Convert(InByte:Byte):Char;
begin result := Char(InByte and 3F); end; Boombuler |
Re: 6-bit Ascii String
Danke für die antworten.
Ich hatte leider vergessen zu sagen, dass die letzten zwei Bits gleichzeitig der Anfang des nächsten Zeichens ist. |
Re: 6-bit Ascii String
Dazu braucht man ein kleines FIFO-Register. Die Laenge errechnet sich als das KGV von 6 und 8. Das waere 24 und damit kann ein DWORD als FIFO genutzt werden.
Jetzt kann man jeweils 3 Bytes reinschreiben und 4 Zeichen auslesen. Das unterste Byte and $3F ist das gewuenschte Zeichen. Danach um 6 Bits nach rechts schieben. Das ganze 4 Mal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz