2016-07-14 27 views
-2

Ich bekomme diese unlesbare Zeichenfolge von einem GPS-Tracking-Gerät, und ich muss diese Informationen zu decodieren, damit ich es in meiner Anwendung (C#) verwenden kann.Erhalten Sie nicht lesbare Zeichenfolge von GPS-Tracker

$A [email protected]‘)���ÿÿûÿÿ����°#~À‚¡U 

Aber in der Tat, was ich erwarte, ist unten etwas wie:

*HQ,XXXXXX,41,4#V1,time,A,**Lat**,N/S,**Lng**,W/E,000.00,000,date,FFFFFBFF,432,35,32448,334 

Wie kann ich die Zeichenfolge in dem Standardformat in C# konvertieren?

ich konvertieren Daten Byte wie Sie sehen können:

24-41-20-20-67-72-51-30-35-41-68-40-91-29-3F-3F-3F-FF-FF-FB-FF-FF-3F-3F-3F-3F-B0-23-7E-C0-82-A1-55 
+0

Hängt von der Codierung der Bytes ab, die Sie vom Netzwerk erhalten. Verwenden Sie die entsprechende Codierungsklasse, und konstruieren Sie Ihre Zeichenfolge basierend darauf. – ManoDestra

+2

Woher bekommst du die Zeichenfolge? Dies scheint ein Problem mit der Komprimierung zu sein. Vielleicht müssen Sie es mit "GzipStream" oder etwas Ähnlichem dekomprimieren. –

+0

@ManoDestra Ich bekomme die Daten von gps, ich teste alle die Codierung, aber es hat nicht funktioniert –

Antwort

2

Es ist wirklich eine binäre Information und Wenn Sie klar haben Lesen Sie das Produkthandbuch, dann sagt es Bildung dieser Binärdateien.

Konvertieren der Daten in hex wird so etwas wie dieses geben ..

24-41-20-20-67-72-51-30-35-41-68-40-91-29-3F-3F-3F-FF-FF-FB-FF-FF-3F-3F- 

Und dann müssen Sie das Handbuch für genaue Bedeutung dieser Hex-Zahlen beziehen

ex - (in einigen chinesischen Geräte)

2 bytes(24), stand for standard mode 
10 bytes, is device'ID (41 20 20 67 72) 
6 bytes, is time 
6 bytes, is data 
8 bytes, is latitude 
2 bytes, battery like this 06= 100% 05=80% 04=60% 03=40% 02=20% 01=10% 
10 bytes is longitude 

** Sie erhalten diese Binärdateien, weil Sie sie gebeten haben, die Informationen im Binärmodus zu senden.

+0

Sie sagten, die 6 Byte nach Geräte-ID ist Zeit, 51-30-35. Was bedeutet es? –

0

Es hängt alles davon, wie Sie Ihre Zeichenfolge zunächst codiert wurde. Grundidee ist jedoch die Verwendung von Transformationsfunktionen mit den erforderlichen Parametern.

Sie können Encoding.GetString Methode der entsprechenden Codierung verwenden.

Zum Beispiel, wenn Sie wissen, dass Original-Zeichenkette in UTF-8 Format codiert wurde, bevor Sie übertragen werden, können Sie es auf die Zeichenfolge konvertieren, wie

string converted = Encoding.UTF8.GetString(bytesReceived);

+0

zu senden, gibt es wieder den ursprünglichen Wert –

+0

byte [] ba = Encoding.Default.GetBytes ("$ A grQ05Ah @ ') ÿÿûÿÿ ° # ~ À,¡U "); Zeichenfolge konvertiert = Encoding.UTF8.GetString (ba); –

+0

Verwenden Sie dieselbe Kodierung für das Erhalten von Bytes auch. Auch hier ist Ihr Beispiel nur * gültig, wenn Sie wissen, dass Byte-Array UTF-8-Daten sind. – Tigran