Effizientes Konvertieren von Byte-Array in String

8

Ich habe ein Byte-Array von 151 Bytes, das normalerweise ein Datensatz ist. Der Datensatz muss in eine Oracle-Datenbank eingefügt werden. In 151 Byte Array-Bereich von 0 bis 1 ist eine Record-ID, 2 bis 3 ist eine Referenz-ID, 4 bis 9 ist ein Datumswert. Die folgenden Daten in einem Bytearray sind ein Datumswert. Ich möchte es in String umwandeln

%Vor%

gibt es eine Möglichkeit, Byte-Array eines Bereichs ( Arrays.copyOfRange(b,0,5) ) effizient in einen String zu konvertieren.

    
Dead Programmer 29.12.2010, 11:00
quelle

5 Antworten

12
%Vor%

Gee, wer hätte das erraten können? Jeder, der sich die Mühe machte, sich die API doc , das ist wer.

    
Michael Borgwardt 29.12.2010, 11:05
quelle
1

Verwenden Sie den String(bytes[] bytes, int offset, int length) -Konstruktor: http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#String (byte [], int, int)

%Vor%     
marcog 29.12.2010 11:04
quelle
1

Wenn Sie für jede Region im Datensatz eine Zeichenfolge erstellen müssen, würde ich eine Teilzeichenfolge vorschlagen:

%Vor%

Die tatsächlichen Offsets können je nach String-Codierung unterschiedlich sein.

Der Vorteil dieses Ansatzes ist, dass das Byte-Array nur einmal kopiert wird. Nachfolgende Aufrufe von substring() erstellen keine Kopien, sondern verweisen einfach auf die erste Kopie mit Offsets. So können Sie einige Speicher- und Array-Kopierzeiten speichern.

    
rodion 29.12.2010 12:07
quelle
1

Keine der Antworten berücksichtigt, dass Sie nicht ASCII verwenden. Wenn Sie Bytes in eine Zeichenfolge konvertieren, sollten Sie immer den Zeichensatz berücksichtigen.

%Vor%     
Drew Noakes 07.09.2017 20:10
quelle
0

und hier fantastischer Weg (nicht effizient):)

%Vor%     
user467871 29.12.2010 11:11
quelle

Tags und Links