Konvertieren von int32 in Byte-Array in go

8

Ich benutze big.NewInt (int64 (e)) .Bytes () um ein int32 in ein Byte-Array zu konvertieren. Gibt es einen eleganteren Weg, dies zu tun?

Ich erwarte, dass AQAB der base64-codierte Wert von e

ist

Ссылка

%Vor%

Ausgabe:

%Vor%

Bearbeiten:

Ich habe b2 und b4 verglichen:

%Vor%

Ich werde b2 für jetzt verwenden ...

    
Kugutsumen 09.07.2013, 02:35
quelle

1 Antwort

5

Bei dieser Art von Aufgabe sollten Ihre ersten Optionen immer encoding/binary sein, und wenn das so ist ungenügende, bitweise Mathematik. In einigen Fällen ist der Aufwand beim Kopieren von Daten jedoch zu groß oder diese sicheren Lösungen sind zu langsam:

Obwohl ich es nicht elegant nennen würde, können Sie Gos unsafe und reflect * Pakete, um das sehr schnell zu machen. Denken Sie daran, dies kopiert nicht die Daten; Es gibt Ihnen nur einen anderen "Blick" darauf. Und gut-unsicher zu sein bedeutet, dass Sie sehr vorsichtig sein müssen (Hallo Unit-Tests und Code Review) und denken Sie daran, dass Sie Go's brechen Speichersicherheit . Wenn jedoch die Ausführungsgeschwindigkeit das dominierende Problem ist und Ihr Team zustimmt, dass unsafe gerechtfertigt ist, %Co_de% kann selten geschlagen werden.

%Vor%

* Hinweis: Möglicherweise möchten Sie unsafe lieber als eine Konstante verwenden. Ich mag die Konstante besser.

Update: Hier sind einige Benchmark-Ergebnisse:

%Vor%     
voidlogic 09.07.2013 04:03
quelle

Tags und Links