ERLANG - Binär-string in integer oder float
Habe ich binäre Zeichenfolgen in der form von entweder:
<<"5.7778345">>
oder
<<"444555">>
Ich weiß nicht, vor der hand, ob es eine float-oder integer.
Ich habe versucht zu tun, eine überprüfung, um zu sehen, wenn es eine Ganzzahl ist. Funktioniert nicht, da es Binär ist. Und versucht, die Umwandlung Binär-zu-Liste, dann überprüfen Sie, ob int oder float. Nicht viel Erfolg.
Muss es eine Funktion wie
binToNumber(Bin) ->
%%Find if int or float
Return.
Jemand eine gute Idee, wie dies zu tun?
Alle die Besten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keinen schnellen Weg, es zu tun. Verwenden Sie so etwas wie dies:
Dieser konvertiert die Binär in eine Liste (string), versuchen Sie dann, um es zu passen in einen float. Wenn das nicht getan werden kann, wir eine Ganzzahl zurück. Ansonsten, wir halten den Schwimmer und zurückgeben.
Dies ist das Muster, das wir verwenden:
Zwischenkonvertierung in die Liste ist überflüssig, da Erlang/OTP-R16B:
Den
binary_to_term
Funktion und Ihr Gegenstückterm_to_binary
würde wahrscheinlich dienen Sie gut.binary_to_term
undterm_to_binary
am besten ändern Sie die Binär-string in eine normale Liste/string. Keine float-oder integer-bezogen werden. Siehe meine Antwort für einen Weg, es zu tun.term_to_binary
zu Holen Sie sich die Binärdatei in den ersten Platz. Dann rücktausch ist trivial. Natürlich könnte es immer noch völlig unrealistisch, wenn die OP nicht Steuern, wo die Daten stammen.