我正嘗試讀取我收到的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