Я пытаюсь прочитать полученное SMS-сообщение. Вызов 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);
Теперь я хотел бы преобразовать байтовый массив в строку.
У меня не работает следующее (возвращает ноль):
Encoding.Unicode.GetString(pMessage, 0, Size);
Как преобразовать массив байтов в строку?
Должен ли я изменить объявление на что-то еще, что будет преобразовано легче? Это подпись функции .
Обновление:
Следующие успехи:
string test = "";
foreach (byte b in pMessage)
{
if (b != 0)
{
test += Convert.ToChar(b);
}
}
Параметр dwSize для текстового сообщения - 320 (первоначально отправленное сообщение содержит менее 160 символов).
Это может быть вызвано из-за неправильной отчетности базового драйвера RIL. Это также может быть источником моей первоначальной проблемы с конверсией.
Я не уверен, что в конце есть завершающий символ.
Как я могу это подтвердить?