Autor Beitrag
tomycat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 12.03.19 10:04 
hallo,
ich habe eine String z.b.
string a = "51 51 51 5A";

Ich bin soweit gekommen, dass ich per forschleife den String auseinandergenommen habe.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string_menge[0// <--- 0x51
...
string_menge[3// <--- 0x5A

//soweit so gut.

data = new Byte[256];
data[0] = <--- wie komme ich string_menge[0] hier rein?



Moderiert von user profile iconTh69: Topic aus WinForms verschoben am Di 12.03.2019 um 09:55
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2292
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 12.03.19 10:17 
Guten Tag,

Mit Convert.ToByte(). Damit wird der Wert 51 ausgegeben, statt der Wert, der für 0x51 steht. Das sind 2 Paar Schuhe.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: tomycat
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3995
Erhaltene Danke: 820

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Di 12.03.19 11:00 

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 12.03.19 20:58 
ausblenden C#-Quelltext
1:
2:
 Byte[] sende_data = new Byte[100];
 sende_data[0] = Convert.ToByte("0x51"); //crash Falsches Format
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4420
Erhaltene Danke: 902


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 12.03.19 21:16 
ausblenden C#-Quelltext
1:
Convert.ToByte("0x51"16// crasht nicht, wir können aber nur raten das es das ist was du willst					

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 12.03.19 21:36 
jein :-)
Ich zerschneide einen String "51 51 51 4e" und jedes Byte soll ich in Arry Byte rein.
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 865
Erhaltene Danke: 143

Win7
VS 2013, VS2015
BeitragVerfasst: Di 12.03.19 22:55 
Dann solltest du erst mal bedenken, dass du mit string_menge[0// <--- 0x51 keineswegs ein Byte bekommst.

Du bekommst ein 'char', welcher 16bit lang ist und einen UTF-16 code point repräsentiert. Um aus einem String eine Menge von Bytes zu bekommen, brauchst du eine Übersetzungstabelle. Früher gab es codepages, heute nimmt man Unicode Encodings.

Ich empfehle dir diese Methode: Encoding.GetBytes(string)

Moderiert von user profile iconTh69: URL-Titel hinzugefügt
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2292
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 12.03.19 23:02 
Zum selbermachen, sowas:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
string s = "51 51 51 4e";
string[] ss = s.Split(' ');
byte[] bb = new byte[ss.Length];
for (int i = 0; i < bb.Length; i++)
    bb[i] = Convert.ToByte(ss[i], 16);

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: tomycat
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3995
Erhaltene Danke: 820

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mi 13.03.19 10:43 
@jfheins: string_menge ist ein string[] (also ein String-Array), das geht zwar nicht aus dem Source-Code direkt hervor, aber aus der Beschreibung (einfacher geht es selbstverständlich mittels String.Split(' ')!).
Auch dein Link paßt nicht zu der Frage, denn dieser würde zeichenweise umwandeln (Binärrepräsentation), anstatt die Hex-Strings umzuwandeln.

Der Code von @Frühlingsrolle ist korrekt, aber dies stand ja auch schon in den von mir geposteten Link drin ("HexToBytes"), wenn auch mittels byte.Parse(), anstatt Convert.ToByte(s, 16).

Für diesen Beitrag haben gedankt: jfheins, tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.03.19 11:34 
vielen Dank an Alle, einfach Super Forum :-)


ausblenden C#-Quelltext
1:
Convert.ToByte(s, 16// <--- genau das habe ich gesucht und habe mir dir Zähne ausgebissen.