I eine ganze Zahl in eine binäre zu machen versuche:Integer zu Binär Erlang
543 = <<"543">>
Wie kann ich dies tun, ohne
integer_to_list(list_to_binary(K)).
I eine ganze Zahl in eine binäre zu machen versuche:Integer zu Binär Erlang
543 = <<"543">>
Wie kann ich dies tun, ohne
integer_to_list(list_to_binary(K)).
Wenn Sie 543-< < „543“ konvertieren möchten >> Ich glaube nicht, dass Sie etwas schneller als finden:
1> list_to_binary(integer_to_list(543)).
<<"543">>
Da in diesem Fall beide Funktionen implementiert in C
Wenn Sie ganze Zahl auf die kleinstmögliche binäre Darstellung konvertieren möchten, können Sie binary:encode_unsigned Funktion aus dem neuen binary Modul wie folgt verwenden:
1> binary:encode_unsigned(543).
<<2,31>>
2> binary:encode_unsigned(543, little).
<<31,2>>
Sie können so etwas wie
6> A = 12345.
12345
7> B = <<A:32>>.
<<0,0,48,57>>
versuchen Aber das erfordert, dass Sie die maximale Anzahl von Bits im Voraus wissen.
Gute Idee, aber was ist, wenn ich es nicht weiß. Gibt es keine binäre Option ohne den Doppelpunkt, um es zu tun? Ich habe versucht _ hat nicht funktioniert. – BAR
Sie können die Konvertierung immer in Schritten durchführen. (A rem 4294967296) für jede 32 Bits und Schleife. –
Für aktuelle Leser ist dies jetzt in R16 implementiert, siehe http://erlang.org/doc/man/erlang.html#integer_to_binary-1
Sollte es nicht list_to_binary (integer_to_list (Int)) sein? – hdima
Ich denke, was er meinte, ist, dass das Generieren voll funktionsfähige Zeichenfolge in Erlang zu viel Speicher (wegen seiner verknüpften Liste von Zeichen, so mit jedem Buchstaben verbraucht zusätzliche 32-Bit oder 64-Bit für Zeiger auf nächste Zeichen in Zeichenfolge) – test30
Ich bezweifle sehr, dass die Erlang-Entwickler Zeichenfolgen zu einer verketteten Liste von Zeichen gemacht haben. Ich habe mich selbst nicht überprüft, aber ich kann mir eine derart ineffiziente Verwendung der verknüpften Liste in der Produktion nicht vorstellen. – BAR