Benutzer mit den meisten Antworten
Bytearray in String umwandeln..

Frage
-
Hi zusammen, ich bekomme von der Socket Schnittstelle ein Bytearray das z.B. so aussieht.
0,60,0,47,0,65,0 ...ich versuche es nun mit ByteArrayToTextString
Public Function ByteArrayToTextString(ByRef Barr() As Byte) As String
Dim enc As System.Text.Encoding = System.Text.ASCIIEncoding.ASCII
Return enc.GetString(Barr)
End Functionin einen String zu konvertieren. Problem ist, er mir es richtig konvertiert, nur die Nullen falsch interpretiert und die im String mit zurück gibt. Gibt es eine Funktionalität, die mir die Nullen vorher oder nachher entfernt?
Gruss
Antworten
-
Hi, ja wenn es von Byte nach String konvertiert wurde ist es ein String, nur halt mit den Nullen drin. Ich habe im Internet jetzt noch was gefunden, was scheinbar klappt.
Nicht alles, was nach String aussieht, ist auch einer. Was soll der Inhalt denn darstellen? Und wieso werden da Nullzeichen und keine Leerzeichen übergeben, wenn es doch eigentlich Leerzeichen sein sollen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
Hallo Thomas,
ja genau, ich möchte Stefan Recht geben. Man kann doch nicht so einfach mal eben die Nullen wegmachen, weil sie nicht in das Konzept passen. Derjenige, der die Daten liefert, muss sich dabei was gedacht haben. Gibt es vielleicht Doku? Jedenfalls über den Aufbau von Nutzdaten wird es in der msdn Doku wohl kaum etwas geben, weil diese Nutzdaten von jedem frei verwendbar sind.
Gruss Ellen
Ich benutze/ I'm using VB2008 & VB2010
- Als Antwort markiert Thomas Klinger2 Montag, 2. April 2012 17:32
Alle Antworten
-
Thomas,
evtl solltest Du nicht mit ASCII sondern mit Unicode arbeiten.
Ändere doch mal die erste Zeile Code in Deiner Funktion zu:
Dim enc As System.Text.Encoding = System.Text.Encoding.Unicode
und schau was passiert.Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Aber immerhin keine Nullen mehr ;-)
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
OK, Spaß beiseite:
ändere Unicode in BigEndianUnicode. Nun sollte es funktionieren.
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/- Als Antwort vorgeschlagen Elmar BoyeEditor Montag, 2. April 2012 10:14
-
Hallo Thomas,
was sollte denn deiner Meinung nach mit den Nullen rauskommen? Das kann vieles bedeuten. Bspw. wird damit auch mal ein String terminiert, d.h. dein String wird dort enden, wo das erste mal \0 auftritt. Andererseits kann es eine Bedeutung als Füllzeichen oder Steuerzeichen haben, ...
http://de.wikipedia.org/wiki/Nullzeichen
Ist das, was Du da bekommst, letztendlich überhaupt ein String?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi, ja wenn es von Byte nach String konvertiert wurde ist es ein String, nur halt mit den Nullen drin. Ich habe im Internet jetzt noch was gefunden, was scheinbar klappt.
Dim enc As System.Text.Encoding = System.Text.ASCIIEncoding.ASCII
Dim stext As String = enc.GetString(Barr)
stext = stext.Replace(Chr(0), String.Empty)
Gruss -
Hi, ja wenn es von Byte nach String konvertiert wurde ist es ein String, nur halt mit den Nullen drin. Ich habe im Internet jetzt noch was gefunden, was scheinbar klappt.
Nicht alles, was nach String aussieht, ist auch einer. Was soll der Inhalt denn darstellen? Und wieso werden da Nullzeichen und keine Leerzeichen übergeben, wenn es doch eigentlich Leerzeichen sein sollen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi, ja wenn es von Byte nach String konvertiert wurde ist es ein String, nur halt mit den Nullen drin. Ich habe im Internet jetzt noch was gefunden, was scheinbar klappt.
Nicht alles, was nach String aussieht, ist auch einer. Was soll der Inhalt denn darstellen? Und wieso werden da Nullzeichen und keine Leerzeichen übergeben, wenn es doch eigentlich Leerzeichen sein sollen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
Hallo Thomas,
ja genau, ich möchte Stefan Recht geben. Man kann doch nicht so einfach mal eben die Nullen wegmachen, weil sie nicht in das Konzept passen. Derjenige, der die Daten liefert, muss sich dabei was gedacht haben. Gibt es vielleicht Doku? Jedenfalls über den Aufbau von Nutzdaten wird es in der msdn Doku wohl kaum etwas geben, weil diese Nutzdaten von jedem frei verwendbar sind.
Gruss Ellen
Ich benutze/ I'm using VB2008 & VB2010
- Als Antwort markiert Thomas Klinger2 Montag, 2. April 2012 17:32
-
Hi danke euch zusammen für eure Antworten.
Wie ich Anfangs schon geschrieben hatte, lese ich diese Daten (über die Socket Schnittstelle) von einem ext. Gerät aus. Der liefert mir die Daten wirklich so wie ich es im ersten Beitrag geschrieben hatte.Ist schon kurios. Das konnte ich im ersten Step auch nicht ahnen.
Durch das Replace klappt es aber jetzt und ich habe meinen String so wie ich ihn brauche.
Danke noch mal -
Hallo Thomas, hast Du denn meinen letzten Tip ausprobiert ?
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/