ich hab ein Problem beim umwandeln von string nach byte.
Als Input kommt ein string der Form:
"0x10 0xDE 0x30 0x4A"
beliebiger Länge.
Ich hätte jetzt einfach gerne ein byte-Array mit 4 Feldern.
Versucht hab ich bisher:
1. string.getbytes(), allerdings liest er mir da aus dem oberen String mit 4Byte ganze 19Byte aus ???:L
2. string.split(" "), und dann einfach das string-Array durchlaufen und per (byte) in das byte-Array casten, dies lässt er aber gar nicht erst zu.
Bin mit meinem Latein am Ende. string.getbytes() erscheint mir am sinnvollsten aber ich verstehe null was er da macht weil es stimmt hinten und vorne nicht was rauskommt.
Die Lösung für dein Problem habe ich jetzt zwar nicht parat, aber das wird so natürlich nicht funktionieren. Dein String besteht ja nun nicht aus 4 Byte, sondern genau aus 19 Byte.
Du wirst dir irgendwas schreiben müssen, was jeweils die Zeichenkombination "0x10" in eine entsprechende Byte-Repräsentation umwandelt.
splitten, 0x entfernen, das ist die handwerkliche Arbeit,
gibt übrigens auch Byte.parseByte(..,16);
> string.getbytes() erscheint mir am sinnvollsten aber ich verstehe null was er da macht
würdest du zumindest verstehen wenn ein String "ich bin ein String und mein Wert ist so viele Bytes wie der Eiffelturm an Metern hoch ist" nicht automation in getBytes() umgerechnet wird?
Java kann doch nicht beliebige Textinfos analysieren, weder die schwersten Rätsel noch 0x als Text,
getBytes() liefert jedes Zeichen einzeln, was auch sonst
Ja, was auch sonst. Gerade das verstehe ich ja nicht, ein Byte besteht doch immer aus zwei Zeichen.
"F" ist kein Byte sondern nur 4Bit. Der String "AFFE" hat in meinen Augen genau 2Byte und nicht 4. deswegen sagte ich auch das mir nicht klar ist was er da tut. Jedes Zeichen einzeln und hängt dann 4 Nullen vorn dran ? Wer braucht denn sowas ? Versteh ich nicht.
Nein, der String "AFFE" hat 4 Byte, bei Unicode sogar 8. Es ist eben ein String und der wird als Text gespeichert. Der Wert für den "AF" hexadezimal steht, muss binär gespeichert und ausgelesen werden, und nicht als Text, dann passt das mit den 2 Byte.
Okay, danke, dann hab ichs geblickt, er interpretiert dann nicht das hexadezimale "A" als Byte sondern den internen Speicher für das Stringzeichen "A".
wieviel Ungenauigkeiten willst du noch in dein Posting packen?
was verstehst du unter einer 'Hexadezimalstelle'? ein gesammtest Konstrukt 0xAB?
sind "2^4=16", also 4 Bit, bei dir 1 Byte?
und "16^2=256", also 8 Bit, dann 4 Bytes, statt vermeintlich nur das Doppelte, 2 Byte?
man man man
"16^2=256" = EIN BYTE
---------
eher ist eine 'Hexadezimalstelle' wohl nur die Hälfte, ein Wert von 0-F, aber wieso 4 Bytes, 4 Bits doch nur
Wen meinst du denn jetzt? Mich? Habe Byte und Bit verwechselt. Gemeint waren Bit. Was gibt es an einer Hexadezimalstelle nicht zu verstehen (0 bis F)? Das steht genauso in Wikipedia.
Die Rechnung stimmt aber: 16^2=256 und 2^4=16. Ich dachte, er wollte 2 Hexstellen in 4 Bit packen. War nur ein Missverständnis. War auch schon spät. Kein Grund, gleich an die Decke zu gehen...