Erlang十六进制字符串为ascii字符串

时间:2014-06-03 08:11:53

标签: erlang hex ascii

我在erlang中将十六进制字符串转换为ascii字符串时遇到问题。

示例:

我的字符串:45474D31303930303031

解析所需的值:EGM1090001

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

我宁愿为这种转换创建函数。种类:

hex2s(HStr) -> hex2s(HStr,[]).

hex2s([X1,X2|Rest], Acc) ->  hex2s(Rest, [ hv(X1) * 16 + hv(X2) |Acc ]);
hex2s([], Acc)           -> lists:reverse(Acc).

hv($0) -> 0;
hv($1) -> 1; 
hv($2) -> 2;
hv($3) -> 3; 
hv($4) -> 4; 
hv($5) -> 5; 
hv($6) -> 6; 
hv($7) -> 7; 
hv($8) -> 8; 
hv($9) -> 9; 
hv($A) -> 10; 
hv($B) -> 11; 
hv($C) -> 12;
hv($D) -> 13; 
hv($E) -> 14; 
hv($F) -> 15.

测试:

hex2s( “45474D31303930303031”)。

“EGM1090001”

相关问题