Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   6-bit Ascii String (https://www.delphipraxis.net/46836-6-bit-ascii-string.html)

Matczek 1. Jun 2005 11:37


6-bit Ascii String
 
Hallo Leute,
ich habe da nochmal was wobei ihr mir helfen könnt.

Ich habe in Int To Hex wandeln ja schon erwähnt, dass ich mit dem HART Protokoll arbeite.

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

marabu 1. Jun 2005 11:59

Re: 6-bit Ascii String
 
Hallo Matczek,

Delphi-Quellcode:
var
  c: char;
  s: string;
begin
  s := 'FF';
  c := Chr(StrToInt('$' + s) shr 2);
end;
Grüße vom marabu

Boombuler 1. Jun 2005 13:04

Re: 6-bit Ascii String
 
oder auch:

Delphi-Quellcode:
Function Convert(InByte:Byte):Char;
begin
  result := Char(InByte and 3F);
end;
Greetz
Boombuler

Matczek 1. Jun 2005 14:16

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.

Robert Marquardt 1. Jun 2005 14:27

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 23:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz