【发布时间】:2019-08-09 13:03:39
【问题描述】:
谁能告诉我如何在 Erlang 中获取以下二进制列表中的前 4 个字符:
<<245,185,198,200,52,227,138,93,250>>
【问题讨论】:
谁能告诉我如何在 Erlang 中获取以下二进制列表中的前 4 个字符:
<<245,185,198,200,52,227,138,93,250>>
【问题讨论】:
1> M = <<245,185,198,200,52,227,138,93,250>>.
<<245,185,198,200,52,227,138,93,250>>
2> <<A,B,C,D, _/binary>> = M.
<<245,185,198,200,52,227,138,93,250>>
3> A.
245
4> B.
185
5> C.
198
6> D.
200
7>
【讨论】:
有两种方法:
1)
将二进制文件拆分为列表 -
[245,185,198,200,52,227,138,93,250] = binary_to_list(<<245,185,198,200,52,227,138,93,250>>).
{"õ¹ÆÈ",[52,227,138,93,250]} = lists:split(4, [245,185,198,200,52,227,138,93,250]).
2)
或者直接获取二进制部分
<<"õ¹ÆÈ">> = binary:part(<<245,185,198,200,52,227,138,93,250>>, 0, 4).
3)
如果您需要精确的 4 个数字 - 您可以使用此功能
[A, B, C, D | _Tail] = binary_to_list(<<245,185,198,200,52,227,138,93,250>>).
2> A.
245
3> B.
185
4> C.
198
5> D
【讨论】:
使用Bit Syntax:
<< R:4/binary,_/binary >> = <<245,185,198,200,52,227,138,93,250>>.
【讨论】:
õ¹ÆÈ 是245,185,198,200 UTF-8 编码。只需通过<<245,185,198,200>> =:= <<"õ¹ÆÈ">>查看即可。
io:format("~w~n", [R]). => <<245,185,198,200>>