[Java] Byte-Array To String?

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java_byte-array_to_string_162795/page_1 - zur Vollversion wechseln!


prayerslayer schrieb am 10.05.2006 um 10:43

hi 5.

hab wieder ein java-problem, diesmal anderer natur. ich brauch eine funktion, die mir ein byte[] in einen string castet. aber nicht so, dass dann das bytefeld als string drinsteht, sondern das, was das bytefeld bedeutet.

ungefähr klar, was ich meine? weil bis jetzt bekomm ich immer nur crap a la "[B@b82368" und so raus, es sollt aber ein wort dastehen :(

bütte helfen :(

ps: hab grad von meinem lehrer gehört, dass ich das bytefeld zuerst in einen hexstring kriegen muss. hat wer einen link zu einem framework/package, das eine klasse "HexString" drin hat? hab mit google auf die schnelle nix angefunden :(

//edit: hab hier bei opensourcefinland.org was gefunden, mit dem ergebnis bin ich aber trotzdem nicht zufrieden :(


gue schrieb am 10.05.2006 um 12:22

Suchst du das?

Zitat
Constructor Summary
String(byte[] bytes)
Constructs a new String by decoding the specified array of bytes using the platform's default charset.
Oder willst du die Bytes im Array als Hexcode darstellen?


Thrasher schrieb am 10.05.2006 um 12:35

Ich nehm mal an du meinst byte[]->hex[]->char[]->string...also in den Arrayfeldern ist der Ascii-Code in Bitcodierung gespeichert? So hätt ichs verstanden

Dann in int konvertieren und als char Array speichern
also
char[i] = byte[i].intValue()
und den String einfach aus dem char[] zusammensetzen

imo ist das das einzige was man für Java braucht ;)

(was ich nicht verstehe:
String toString()
Returns a String object representing this Byte's value.
static String toString(byte b)
Returns a new String object representing the specified byte.

Eigentlich müsste byte[i].toString() ja den Wert zurückgeben, während Byte.toString(byte[i]) den Hash zurückgibt ?)

Die Lösung ist zwar etwas russisch, aber:
"In Russia, you don't code Java, Java codes you!"


prayerslayer schrieb am 10.05.2006 um 12:40

Zitat von Thrasher
Ich nehm mal an du meinst byte[]->hex[]->char[]->string...also in den Arrayfeldern ist der Ascii-Code in Bitcodierung gespeichert?

leider hab ich überhaupt keine ahnung davon, aber nich nehme einmal an, ja. werd mich jetzt daran machen, deinen vorschlag zu implementieren, ich meld mich :) thx erstmal.

//edit:

hab jetzt folgendes gecodet:
Code: PHP
private String toString(byte[] array)
  {
    char[] charray = new char[array.length];
    for (int i=0;i<=array.length-1;i++)
    {
      Byte bt = new Byte(array[i]);
      charray[i]=bt.intValue();
    }
    return new String (charray);
  }

das lässt mich java aber nicht kompilieren, da die zeile charray[i]=bt.intValue() net passt. "possible loss of precision" und "found: int, required: char".

was machen?


Frys_Assassin schrieb am 10.05.2006 um 13:00

Ich vermute du brauchst die Konvertierung ins Characterset -> Versuchs mit dem von gue vorgeschlagenen Tipp:
String decodedString = new String(theByteArray)


Thrasher schrieb am 10.05.2006 um 13:08

Zitat

Byte bt = new Byte(array[i]);
charray[i]=bt.intValue();

eigentlich würd
Code:
chararray[i] = array[i].intValue();
auch reichen..

warum der mit Loss of precision und required:char kommt versteh ich ned ganz,
Code:
char a = 97;
funktioniert ja auch...


prayerslayer schrieb am 10.05.2006 um 13:18

Zitat von Thrasher
eigentlich würd
Code:
chararray[i] = array[i].intValue();
auch reichen..

das lässt er mich aber auch nicht machen ;) hab ich am anfang probiert gehabt...

ich probier mal die lösung von gue :)

//edit: yeeeeah funktioniert auf anhieb! heißen danke, gue :D


Thrasher schrieb am 10.05.2006 um 13:26

pah, ein Einzeiler wie langweilig ;p
passt, warum kompliziert wenns auch einfach geht




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026