我在我的设备里使用SIM-900。
我需要从sim卡中得到一个余额。
我使用这个命令并得到这个结果。
Command Modem: AT+CUSD=1,"*555*1*2#" 结果:
+CUSD: 0,"06270639062A062806270631002006270635064406CC002000340039003900380039063106CC06270644002E00200031062F064206CC064206470020062A064506270633003D003100300030062F064206CC064206470020062A06450627063300200631062706CC06AF062706460020062F063106470645062706460020063106480632",72我知道这个结果是PDU格式和UCS2,但我不能阅读文本。
String pdu = "06270639062A062806270631002006270635064406CC002000340039003900380039063106CC06270644002E00200031062F064206CC064206470020062A064506270633003D003100300030062F064206CC064206470020062A06450627063300200631062706CC06AF062706460020062F063106470645062706460020063106480632"
SmsMessage smsMessage = SmsMessage.createFromPdu(pdu);我使用这个站点。但我不能用java android。

发布于 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,如下所示):
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);输出
اعتبار اصلی 49989ریال. 1دقیقه تماس=100دقیقه تماس رایگان درهمان روزhttps://stackoverflow.com/questions/57829327
复制相似问题