我在erlang中将十六进制字符串转换为ascii字符串时遇到问题。
示例:
我的字符串:45474D31303930303031
解析所需的值:EGM1090001
这样做的最佳方法是什么?
答案 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”