Hi,
das Thema String, Char und Byte ist mir nach wie vor noch nicht so richtig transparent.
Ein "Char" enthält ein Zeichen. Ein Char ist wohl zwischen ein und zwei Bytes lang abhängig vom Encoding (z.B. ASCII, Unicode UTF-8 bzw. UTF-16, etc.)
Ein "String" ist ein Array von "Char" (wird aber nicht als array präsentiert und hat somit keinen Index). Insbesondere ist der Inhalt des Strings vom Encoding abhängig.
Ein "Byte" hat acht Bits, also immer dieselbe Länge. Es enthält eine Bitkombination die einer Zahl zwischen 0 und 255 entspricht. Insbesondere hat ein Byte kein Encoding.
Ich hoffe, ich hab das alles richtig verstanden.
Nun würde ich gern einen ByteArray als CommandArgument übergeben. Dazu wird ein STRING benötigt. Und deshalb würde ich gern im rufenden Programm meinen ByteArray in einen String umwandeln ... und dann im gerufenen Programm aus dem übergebenen String wieder den Byte Array daraus machen.
Das ist wohl nicht so einfach wie es sich anhört. So habe ich das versucht:
Die Conversion Byte nach String klappt wie erwartet.
Die Conversion String nach Byte klappt (wie erwartet) NICHT ! Beim ersten Zeichen (dem Buchstaben "A") erhalte ich im
Wie macht man das denn richtig ? Ich muss erreichen, dass die Conversion 100% reversibel ist ! Aus dem Byte Array wird ein String .... und aus dem String muss exakt der gleiche Byte Array herauskommen. Unabhängig davon, welches Encoding aktiv ist !
LG
Peter
das Thema String, Char und Byte ist mir nach wie vor noch nicht so richtig transparent.
Ein "Char" enthält ein Zeichen. Ein Char ist wohl zwischen ein und zwei Bytes lang abhängig vom Encoding (z.B. ASCII, Unicode UTF-8 bzw. UTF-16, etc.)
Ein "String" ist ein Array von "Char" (wird aber nicht als array präsentiert und hat somit keinen Index). Insbesondere ist der Inhalt des Strings vom Encoding abhängig.
Ein "Byte" hat acht Bits, also immer dieselbe Länge. Es enthält eine Bitkombination die einer Zahl zwischen 0 und 255 entspricht. Insbesondere hat ein Byte kein Encoding.
Ich hoffe, ich hab das alles richtig verstanden.
Nun würde ich gern einen ByteArray als CommandArgument übergeben. Dazu wird ein STRING benötigt. Und deshalb würde ich gern im rufenden Programm meinen ByteArray in einen String umwandeln ... und dann im gerufenen Programm aus dem übergebenen String wieder den Byte Array daraus machen.
Das ist wohl nicht so einfach wie es sich anhört. So habe ich das versucht:
VB.NET-Quellcode
- Public TestByteArray As Byte() = {&H41, 65, &H54, &H31, &H3F, &H20, &H46, &H55}
- Dim TestString As String = ""
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- For i As Integer = 0 To 7
- 'Array to string
- TestString &= Chr(TestByteArray(i))
- Next
- TextBox1.Text = TestString
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- 'String to array
- For i As Integer = 0 To 7
- Dim myDigit As String = TestString.Substring(i, 1)
- TestByteArray(i) = CByte(myDigit)
- Next
- End Sub
Die Conversion Byte nach String klappt wie erwartet.
Die Conversion String nach Byte klappt (wie erwartet) NICHT ! Beim ersten Zeichen (dem Buchstaben "A") erhalte ich im
Cbyte
eine Invalid Cast Exception. Wie macht man das denn richtig ? Ich muss erreichen, dass die Conversion 100% reversibel ist ! Aus dem Byte Array wird ein String .... und aus dem String muss exakt der gleiche Byte Array herauskommen. Unabhängig davon, welches Encoding aktiv ist !
LG
Peter