![]() |
Längsparität XOR berechnen (BCC)
Hallo Zusammen,
mit Bitschiebereinen habe ich recht wenig zu tun. Für eine RS232 Kommunikation muss ich eine Checksum über einen beliebig langen String bilden. Möglicherweise hat das schon mal jemand gemacht und kann mir damit aushelfen. Es werden genau sieben Bits durch den kompletten String Quer mit XOR verknüpft. Die Bits müssen also aufgefüllt werden. Aus <ETX> = $3 = 11 wird also 0000011
Delphi-Quellcode:
Ein Beispiel:
Der String AB34<ETX> ergibt als BCC $7 A B 3 4 <ETX> BCC 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 Der String 01#DR#1#Testdruck#<ETX> ergibt nach dem Muster ein $78 Dankeschon Gruß Kostas |
Re: Längsparität XOR berechnen (BCC)
Ich nehme man, daß Du mit 8-Bit-Zeichen arbeitest. Dann xorst Du einfach alle Zeichen und maskierst die 7 Bit (falls alle Zeichen nur 7 Bit haben, ist das eigentlich überflüssig):
Delphi-Quellcode:
function bcc(s: ansistring): byte;
var t,i: integer; begin t := 0; for i:=1 to length(s) do t := t xor ord(s[i]); bcc := t and $7f; end; |
Re: Längsparität XOR berechnen (BCC)
Zitat:
Hallo gammatester, volltreffer, genau das ist es. Im String können teoretisch alle ASCII Zeichen von 1 bis 127 vorkommen. Tausend Dank gammatester Du hast mir sehr weitergeholfen. Gruß Kostas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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-2025 by Thomas Breitkreuz