Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
BitShift right (>>) um EndLine bei String zu entfernen?
Falke2000
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Köln

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.355

beantworten | zitieren | melden

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!?
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.105

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

Das hab ich hier zur Erleichterung nicht erwähnt, da damit der Entwickler i.d.R. nicht in Kontakt kommt.
private Nachricht | Beiträge des Benutzers
CoLo
myCSharp.de - Member



Dabei seit:
Beiträge: 224

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers