我正在尝试使用Erlang实现SMPP协议,我尝试将字符串(例如用户名和密码)转换为字节,以便提出PDU发送到SMSC.所有搜索和阅读各种材料都没有帮助.
请通过我能实现这一目标的方式提出建议.
可能首先要注意的是Erlang中的字符串没有特殊类型.因此,Erlang中的字符串实际上表示为整数列表:
1> [116, 101, 115, 116].
"test"
Run Code Online (Sandbox Code Playgroud)
因此,请记住,您的问题实际上已转换为"如何将整数列表转换为字节".现在,对于具有8位字符的字符串,list_to_binary/1函数应该非常简单:
1> list_to_binary("test").
<<"test">>
2> list_to_binary([0, 255]).
<<0,255>>
Run Code Online (Sandbox Code Playgroud)
但是,如果您有一个Unicode字符串list_to_binary/1将引发badarg错误(请注意错误消息中表示原始字符串的方式):
1> list_to_binary("????").
** exception error: bad argument
in function list_to_binary/1
called as list_to_binary([1090,1077,1089,1090])
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以使用来自unicode模块的函数.例如,要将Unicode字符串转换为UTF-8二进制unicode:characters_to_binary/3(还有 unicode:characters_to_binary/1 和 unicode:characters_to_binary/2)可以使用:
1> unicode:characters_to_binary("????", unicode, utf8).
<<209,130,208,181,209,129,209,130>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |