[Java] Byte-Array To String?
prayerslayer 10.05.2006 - 10:43 76185 7
prayerslayer
Oar. Mh.
|
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
Bearbeitet von prayerslayer am 10.05.2006, 13:20
|
gue
Addicted
|
Suchst du das? 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
Bloody Newbie
|
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!"
Bearbeitet von Thrasher am 10.05.2006, 12:39
|
prayerslayer
Oar. Mh.
|
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: 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?
Bearbeitet von prayerslayer am 10.05.2006, 12:52
|
Frys_Assassin
information keeper
|
Ich vermute du brauchst die Konvertierung ins Characterset -> Versuchs mit dem von gue vorgeschlagenen Tipp: String decodedString = new String(theByteArray)
|
Thrasher
Bloody Newbie
|
Byte bt = new Byte(array[i]); charray[i]=bt.intValue(); eigentlich würd chararray[i] = array[i].intValue();
auch reichen.. warum der mit Loss of precision und required:char kommt versteh ich ned ganz, char a = 97;
funktioniert ja auch...
|
prayerslayer
Oar. Mh.
|
eigentlich würd
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
Bearbeitet von prayerslayer am 10.05.2006, 13:20
|
Thrasher
Bloody Newbie
|
pah, ein Einzeiler wie langweilig ;p passt, warum kompliziert wenns auch einfach geht
|