Laden...

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

7 Antworten
1,754 Aufrufe
Letzter Beitrag: vor 10 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

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!?

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.

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).

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.

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

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?