Laden...

BitShift right (>>) um EndLine bei String zu entfernen?

Erstellt von Falke2000 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.602 Views
F
Falke2000 Themenstarter:in
21 Beiträge seit 2015
vor 9 Jahren
BitShift right (>>) um EndLine bei String zu entfernen?

Hallo Leute!

Ich soll eine HexStringToByteArray neu implementieren. Daher schau ich mir gerade die Semantik an und sehe dieses Statement:


String p_hex.Length = "Blabalbal";
Byte[] p_bytes = new Byte[p_hex.Length >> 1];

Ich würde gerne wissen ob ich richtig mit der Annahme liege, dass hier der BitShift Right dafür verwendet wird um den EndLine Char den jeder String inne hat beim zuweisen in ein ByteArray entfernt wird?

gruß Charlie

4.939 Beiträge seit 2008
vor 9 Jahren

Nein, ein Bitshift entspricht logisch einer Multiplikation (<<) bzw. Divison (>>) mit 2.
Es hätte also auch


Byte[] p_bytes = new Byte[p_hex.Length / 2];

dort stehen können.
Dein Hex-String enhält aber ungültige Zeichen, aber ich hoffe, du verstehst trotzdem warum das Zielarray nur halb so groß dann ist!?

C
2.121 Beiträge seit 2010
vor 9 Jahren

den EndLine Char den jeder String inne hat

Wie kommst du auf sowas? Ein String hat nur das was man in ihn hinein schreibt, da ist nichts automatisch dran. Ganz davon abgesehen was du mit EndLine meinst.

16.834 Beiträge seit 2008
vor 9 Jahren

C markiert das Ende eines Strings. C# und Java nicht.
Was also genau Deine Intension ist, das ist hier unklar.

Es wäre nett, wenn Du Dein Vorhaben genauer erklärst; denn nur dann macht der Thread hier sinn (oder dann auch nicht).

1.346 Beiträge seit 2008
vor 9 Jahren

Fun fact: Auf .net strings folgt im Speicher trotzdem immer eine 0, sie sind also doch 0 terminiert. Das erleichtert interop mit nativen code.

Aber da braucht man sich nicht selbst drum zu kümmern.

16.834 Beiträge seit 2008
vor 9 Jahren

Das hab ich hier zur Erleichterung nicht erwähnt, da damit der Entwickler i.d.R. nicht in Kontakt kommt.

C
224 Beiträge seit 2009
vor 9 Jahren

also


String p_hex.Length = "Blabalbal";

funktioniert bei mir nicht. Hätte mich auch gewundert, wenn es funktioniert hätte. 😃

Hier ist ein schöner Artikel zum Thema Hex-Konvertierung:
How do you convert Byte Array to Hexadecimal String, and vice versa?