Java 将 7 位字符集八位字节转换为可读字符串(来自 PDU SMS)

标签 java sms hex pdu utf-7

我正在从 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/

相关文章:

java - 将另一个类中的静态变量调用为可运行的

ios - MFMessageComposeViewController 打开彩信编辑而不是短信和 'buddy name' 文本而不是电话号码

android - 以编程方式发送 SMS Android(未接收状态)

java - Android 上的 WebRTC AEC

java - 使用 >>> 1 如何在将两个数字相加而不是除以 2 时防止溢出?

cordova - Phonegap3 + Phonegap-短信接收插件

python - 当数字中没有字母时,bytearray.fromhex 不会转换

php - 我可以在 Perl 或 PHP 中生成 SHA1 吗?

c# - 将二进制字符串转换为十六进制

java - 无法从 R.java 将 int 转换为 String