当前位置: 首页 > 编程语言 > C#

为什么我在UCS2中得到数字如何修复命令和c#?share

时间:2023-04-11 02:38:01 C#

为什么我在UCS2中得到数字如何修复命令和c#?我通过putty读取短信时遇到问题,因为我键入AT+CMGL="ALL"但消息(文本)和数字只是数字,我读到我的gms调制解调器诺基亚s10使用UCS2,但我不知道该怎么做做?怎么才能看到刚刚看到号码的消息?请帮助我也使用代码项目中的这段代码,我更改了这一行,但它与upt2中的putty相同publicShortMessageCollectionReadSMS(SerialPortport,stringp_strCommand){//设置电话并读取消息ShortMessageCollectionmessages=null;try{#regionExecuteCommand//检查连接ExecCommand(port,"AT",300,"Nophoneconnected");//使用消息格式“文本模式”ExecCommand(port,"AT+CMGF=1",300,"设置消息格式失败。");//使用字符集“PCCP437”**ExecCommand(port,"AT+CSCS="UCS2"",300,"设置字符集失败。")**;//选择SIM存储ExecCommand(port,"AT+CPMS="SM"",300,"选择信息存储失败。");//读取消息stringinput=ExecCommand(port,p_strCommand,5000,"读取消息失败。");#endregion#region解析消息消息=解析消息(输入);#endregion}catch(Exceptionex){抛出ex;}if(messages!=null)返回消息;否则返回空;}注意AT+CSCS只影响command和response字符串参数,在AT+CMGL的情况下,报文内容不是字符串,而是格式。有关格式的更多详细信息,请参阅27.005规范,它有点复杂(仅注意第一个InthecaseofSMSpart在SMS的情况下,忽略第二个IncaseofCBSpart在CBS的情况下)。但它的简短版本是,使用UCS-2,您将获得十六进制编码的数据(例如,两个字符“2”和“A”代表一个值为0x2A的字节(ASCII/UTF-8字符“*”))。因此,您应该将4和4接收到的字节解码为UCS-2字符中的16位十六进制编码。所以解码成字节数组然后转换成字符串,看Appleman1234的回答(他的回答没有解决核心问题,即十六进制解码)。要从UCS-2编码转换,将结果(输入)存储在字节数组而不是字符串中,然后调用System.Text.Encodingenc=Encoding.Unicode;字符串myString=enc.GetString(myByteArray);如果UCS-2编码是BigEndian,则更改System.Text.Encodingenc=Encoding.Unicode;System.Text.Encodingenc=Encoding.BigEndianUnicode;.相关资源包括:以上是C#学习教程:UCS2中为什么会得到数字Howtofixcommandsandc#?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: