我正在从 GSM 调制解调器接收 PDU 格式的短信; TP-用户数据是“C8329BFD06DDDF72363904”
我收到的是:“2����r69”,而发送的短信是“Hello World!”。
这是我的java代码:
private String fromPDUText(String PDUSMSText) {
String endoding = PDUSMSText.substring(0, 2);
PDUSMSText = PDUSMSText.substring(18);
byte bs[] = new byte[PDUSMSText.length() / 2];
for(int i = 0; i < PDUSMSText.length(); i += 2) {
bs[i / 2] = (byte) Integer.parseInt(PDUSMSText.substring(i, i + 2), 16);
}
try {
String out = new String(bs, "ASCII");
} catch(UnsupportedEncodingException e) {
e.printStackTrace();
return "";
} finally {
return out;
}
}
最佳答案
输入以每个字符 7 位的形式打包,这意味着每 8 个字节编码 9 个字符。为这种格式构建解析器可能是一项有趣的练习,也可能是一次令人沮丧的经历,具体取决于您如何对待它。使用库可能会更好,Google 快速搜索显示 several code examples .
关于Java 将 7 位字符集八位字节转换为可读字符串(来自 PDU SMS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17973495/