我正尝试读取我收到的SMS消息。对SmsReadMessage
的调用成功完成,我得到一个字节数组中的消息。下面是SmsReadMessage
声明:
SmsReadMessage和缓冲区转换为字符串
[DllImport("sms.dll", SetLastError=true)]
public static extern int SmsReadMessage(
IntPtr smshHandle,
byte[] psmsaSMSCAddress,
byte[] psmsaSourceAddress,
byte[] pstReceiveTime,
byte[] pbBuffer,
int dwBufferSize,
byte[] pbProviderSpecificBuffer,
int dwProviderSpecificDataBuffer,
ref int pdwBytesRead);
现在我想的字节数组转换为字符串。
下,我没有工作(返回null):
Encoding.Unicode.GetString(pMessage, 0, Size);
如何将字节数组转换为字符串?
我应该将声明更改为其他将更容易转换的其他声明吗?这是function's signature。
更新: 以下成功:
string test = "";
foreach (byte b in pMessage)
{
if (b != 0)
{
test += Convert.ToChar(b);
}
}
文本消息的dwSize参数是320(最初发送的消息是小于160个字符)。
这可能是由于底层RIL驱动程序报告错误导致的。这也可能是我原来的转换问题的根源。
我不确定最后是否有终止字符。
我该如何确认?
您确定问题出在转换而不是读数?调用该函数后,pBuffer和dwBufferSize是否具有期望值? – kgiannakakis 2009-11-30 11:00:53
我用所需的信息更新了问题。谢谢! – Shaihi 2009-11-30 11:35:08
如果按字节进行翻译,则使用Encoding.ASCII。至于终结者,只要看看数组中的字节数据,看看有没有。 – ctacke 2009-11-30 13:55:31