2

0x80 0x9416 進数(utf-8) を対応する 10 進数値に変換しようとしています2014

Erlangでその変換を行うことは可能ですか?

4

3 に答える 3

3

変換できない理由は、単純に無効だからです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:characters_to_list(<<"I am a valid utf8 binary">>, utf8).

ちなみにコードポイントは、エンコーディングに2014あるこの文字です。0xDF 0x9EUTF-8

于 2013-05-29T22:14:10.077 に答える
1

そのためにバイナリ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>>
于 2013-05-28T07:54:37.613 に答える
0

私は質問と少し混乱しています。(ごめんなさい)...

erlang では、16 進数は 16# を使用してプレフィックスが付けられるため、16#80 または 16#94 の数値を 10 進数値に変換する場合は、integer_to_list(16#AF8, 10) を使用できます。

于 2013-05-28T02:45:22.663 に答える