2013-06-07 2 views
0

Я попытался это:Преобразование Byte [] массив в строку

byte[] buffer = (byte[])mf.Input; 
    //Here, the buffer comes from a serial input 
string result = System.Text.Encoding.UTF8.GetString(buffer) 
string result2 = System.Text.Encoding.ASCII.GetString(buffer); 

И некоторые другие методы, как это. Но он возвращает некоторые странные символы ... Как я могу его преобразовать?

Это значение, которое я получаю: " ?? 3? &? 5?"
и это было предположить, чтобы вернуть мне значение Card ID как B54A7WQ912
Значение буфер: `буфера {байт [12]}

[0]168 
[1]63 
[2]18 
[3]63 
[4]21 
[5]... 
[6].... 
[7].... 
[8]... 
[9]... 
[10]... 
[11]... 

каждый со значением.

UPDATE
Теперь я могу Write/Read в/из Mifare карты RFID. Но специальные символы, такие как á,ã,à,è, не показываются, вместо этого он показывает ?. Как я могу это исправить? Благодаря !

Obs: Я использую методы выше/\

+2

Это правильный подход, но если вы не выбрали правильную кодировку, это не сработает. Вы абсолютно уверены, что исходный текст не является ANSI или ASCII? –

+0

Какие странные символы? Возможно ли, что буфер частично заполнен? – I4V

+0

Что такое кодировка, используемая для передачи строки? – Steve

ответ

0

Encoding.GetString(byte[]) является правильный подход, вы должны выбрать правильную кодировку и/или гарантировать, что данные, переданные вам на самом деле в правильном формате.

+1

не будет «Кодирование.GetString (byte [], 0, actualBytesInBuffer) 'более корректный подход, не предполагая, что буфер действительно заполнен? – I4V

+0

Отличная точка. Идите и отредактируйте ответ, если хотите. – Haney

+0

Нет такого метода, как 'Encoding.GetString' only' Encoding.GetEncoding' – PlayHardGoPro