我正在尝试将十六进制0x80 0x94
(utf-8)转换为相应的十进制值2014
是否可以在 Erlang 中进行这种转换?
您无法转换它的原因仅仅是它无效UTF-8
。
4> io:format("~.2B~n", [16#80]).
10000000
ok
5> io:format("~.2B~n", [16#94]).
10010100
ok
有关详细信息,请参阅此站点上的描述(我向您展示二进制文件,以便您查看二进制模式)。但归结80h
为UTF-8
.
UTF-8
我认为您可能想要来自二进制文件的 unicode 代码点,如下所示:
unicode:characters_to_list(<<"I am a valid utf8 binary">>, utf8).
顺便说一句,代码点是正在编码2014
的这个字符。0xDF 0x9E
UTF-8
您可以为此使用二进制utf8
转换。尽管看起来您的号码已关闭:
2> A = <<16#80, 16#94>>.
<<128,148>>
3> <<B/utf8>> = A.
** exception error: no match of right hand side value <<128,148>>
转换是双向的,所以这是我期望开始的:
5> <<2014/utf8>>.
<<223,158>>
我对这个问题有点困惑。(对于那个很抱歉)...
在 erlang 中,十六进制数字使用 16# 作为前缀,所以如果你有数字 16#80 或 16#94 并且你想将其转换为十进制值,你可以使用 integer_to_list(16#AF8, 10)