mag ich die IP-Adresse, die Portnummer und benutzerdefinierte Inhalte in den binären, tue binäre Anpassung für ganze Zahlen setzen, aber ich kann nicht einen Weg, es zu tun finden.Wie parsen Tupel, Integer und String in Erlang-Binärdatei?
Angenommen, die IP-Adresse ist IP = {192,168,1,1}
, die Portnummer ist PN = 10000
und benutzerdefinierte Inhalte ist Content = <<"{request, {M, F, A}}">>
, kann ich sie alle in binäre setzen durch Bin = <<list_to_binary(tuple_to_list(IP))/binary, Content/binary, PN/integer>>
verwenden, das binäre Ergebnis ist
<<127,0,0,1,123,114,101,113,117,101,115,116,44,32,123,77,
44,32,70,44,32,65,125,125,16>>
Aber wenn ich versuche zu tun Binary Matching für die Port-Nummer (PN), es geht um etwas anderes (16), wie kann ich mit der Ganzzahl umgehen und behalten Sie ihre Größe auf 1 in der Binärdatei?
Die binäre Anpassung ist: <<A:4/binary, B:20/binary, C>> = Bin
. Das Ergebnis von C 16 ist, nicht 10000.
Ein weiteres Problem, das ich fragen möchte, ist, wie die Größe des Pakets zu begrenzen? Ist es möglich, die Paketgröße zu begrenzen, ohne die Länge des Inhalts zu berücksichtigen? Kompromisse oder hacken Sie es in mehrere Teile?
Ich sehe verschiedene Dinge here.The Code geschrieben nicht mit dem binären erzeugt entsprechen. Wie auch immer, woher weißt du, dass "Content" 20 Bytes ist? Unter anderem glaube ich, dass du genau das findest. –
@AsierAzkuenaga Danke, ich habe das Problem bemerkt und bearbeite den Inhalt erneut. Ich weiß, dass der Inhalt 20 Byte ist, indem Byte_size (Inhalt) verwendet. – billcyz
Ich möchte für die Ganzzahl (Portnummer) übereinstimmen, aber das Ergebnis ist anders. – billcyz