2010-11-22 3 views
0

У меня есть DataTable customerTbl и я шаг через рядыПреобразование массива байтов в столбце данных в строку?

foreach (DataRow row in customerTbl.Rows) 
{ 
     string CustomerID = row["Customer ID"].ToString(); 
} 

Однако в столбце идентификатор клиента возвращает байт []. Как я могу преобразовать это в строку (CustomerID)?

Я пытался что-то вроде

string CustomerID = Convert.ToBase64String(row["Customer ID"]); 

, но это явно не работает

Заранее спасибо

+0

Почему 'CustomerId'' 'byte []' в первую очередь? – leppie

+0

Каким должен быть идентификатор клиента? Это текст? Или просто цифра? 'Convert.ToBase64String', как говорится в пакете: он преобразуется в [base64 string] (http://en.wikipedia.org/wiki/Base64). Почему вы хотите увидеть строку? Зачем? –

+0

Идентификатор клиента является текстовым и числовым, в новой базе данных у нас есть правильный идентификатор, но мне все равно нужно отправить его для некоторых других ссылок. Другая база данных принимает только строки в столбце, где мне нужен этот идентификатор. – Morgan

ответ

2

В зависимости от кодировки байтов, вам нужно правильно Encoding объект выполните преобразование. Если предположить, что это ASCII, вы можете сделать это:

string customerID = Encoding.ASCII.GetString((byte[])row["Customer ID"]); 

Если в другой кодировке (UTF8, utf16 и т.д.), используйте соответствующий.

+0

Привет, Jeff, с этим я получаю «Error 1» System.Data.DataRow »не содержит определения для« Поле », и не существует метода расширения« Поле », принимающего первый аргумент типа« System.Data.DataRow » (вам не хватает директивы использования или ссылки на сборку?) « – Morgan

+0

Вам понадобится бросок вместо использования метода расширения« Поле() ». Поскольку вы добавили, что это C# 2.0, методы расширения недоступны. –

+0

Хорошо спасибо, теперь он работает. Извините, я забыл добавить 2.0 с самого начала. – Morgan

Смежные вопросы