Inhaltsverzeichnis
Bascom Strings und Bytes
Es taucht öfter die Frage auf, wie man aus Strings einzelne Zeichen als Byte gewinnen kann. Die "MID" Funktion, die sich ja anbieten würde, verlangt für das Ergebnis auch wieder einen String.
Eine Lösung ist die Redefinition des Strings als Byte-Array durch "OVERLAY"
DIM MyString AS STRING * 20 DIM MyArray(21) AS BYTE AT MyString OVERLAY
Man darf daran erinnern, daß String * 20 nicht die Länge 20, sondern 21 hat, denn für die abschließende NULL muß immer ein Platz frei bleiben.
Einzelbytes aus String
DIM MyEinzelByte AS BYTE DIM MyStrlen AS BYTE DIM MyIndex AS BYTE MyString = "Hello, World" MyStrlen = LEN(MyString) FOR MyIndex = 1 TO MyStrlen MyEinzelByte = MyArray(MyIndex) NEXT
Natürlich kann man auch das Stringende durch die NULL erkennen
DIM MyEinzelByte AS BYTE DIM MyIndex AS BYTE MyString = "Hello, World" FOR MyIndex = 1 TO 21 MyEinzelByte = MyArray(MyIndex) IF MyEinzelByte = 0 THEN EXIT FOR END IF NEXT
Strings aus Einzelbytes
Besonders beim Terminal-Input über die UART kommt das vor. Die Definition von String und Byte ist gleich
DIM MyEinzelByte AS BYTE DIM MyIndex AS BYTE MyIndex = 1 DO MyEinzelByte = INKEY() IF MyEinzelByte <> 0 THEN IF MyEinzelByte = 13 THEN MyArray(MyIndex) = 0 EXIT DO ELSE MyArray(MyIndex) = MyEinzelByte INCR MyIndex END IF END IF LOOP PRINT MyString