首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中的PDU和UCS2

中的PDU和UCS2
EN

Stack Overflow用户
提问于 2019-09-06 22:52:45
回答 1查看 177关注 0票数 0

我在我的设备里使用SIM-900。

我需要从sim卡中得到一个余额。

我使用这个命令并得到这个结果。

代码语言:javascript
复制
Command Modem: AT+CUSD=1,"*555*1*2#" 

结果:

代码语言:javascript
复制
+CUSD: 0,"06270639062A062806270631002006270635064406CC002000340039003900380039063106CC06270644002E00200031062F064206CC064206470020062A064506270633003D003100300030062F064206CC064206470020062A06450627063300200631062706CC06AF062706460020062F063106470645062706460020063106480632",72

我知道这个结果是PDU格式和UCS2,但我不能阅读文本。

代码语言:javascript
复制
String pdu = "06270639062A062806270631002006270635064406CC002000340039003900380039063106CC06270644002E00200031062F064206CC064206470020062A064506270633003D003100300030062F064206CC064206470020062A06450627063300200631062706CC06AF062706460020062F063106470645062706460020063106480632"

SmsMessage smsMessage = SmsMessage.createFromPdu(pdu);

我使用这个站点。但我不能用java android。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-06 23:20:59

06270639062A...0627 0639 062A ...

0627是Unicode字符ا (阿拉伯字母ALEF)的十六进制。

0639是Unicode字符ع (阿拉伯字母AIN)的十六进制。

062A是Unicode字符ت (阿拉伯字母TEH)的十六进制。

等等..。

因此,以4块为单位的十六进制数字,解析为十六进制并分配给char (因为char是UTF-16又名UCS2,如下所示):

代码语言:javascript
复制
String input = "06270639062A062806270631002006270635064406CC002000340039003900380039063106CC06270644002E00200031062F064206CC064206470020062A064506270633003D003100300030062F064206CC064206470020062A06450627063300200631062706CC06AF062706460020062F063106470645062706460020063106480632";

char[] buf = new char[input.length() / 4];
for (int i = 0; i < buf.length; i++)
    buf[i] = (char) Integer.parseUnsignedInt(input.substring(i * 4, i * 4 + 4), 16);
String output = new String(buf);

System.out.println(output);

输出

代码语言:javascript
复制
اعتبار اصلی 49989ریال. 1دقیقه تماس=100دقیقه تماس رایگان درهمان روز
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57829327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档