C # - конвертировать строку шестнадцатеричных значений в шестнадцатеричный - PullRequest
1 голос
/ 13 апреля 2011

Это может показаться странным, но моя проблема в том, что у меня есть текстовая строка шестнадцатеричных значений из текстового файла, например так:

"0x0f, 0x40, 0xff, ...."

Я сохранил их в массиве, разделенном разделителями,но теперь мне нужно иметь байтовый массив того, что в шестнадцатеричном виде:

stringArray[0] = "0x0f";

byteArray[0] = 0x0f;

Как мне это сделать (пользователь может загрузить текстовый файл, поэтому я не знаю, чтозначения), есть какая-то арифметика, которую я могу использовать?

Ответы [ 3 ]

3 голосов
/ 13 апреля 2011

Если ваша строка в правильном формате, вы можете создать свой массив, используя этот код (выдает исключения, если входные данные неправильно отформатированы):

var text = "0x0f, 0x40, 0xff";
var bytes = text
  .Split(new[] { ", " }, StringSplitOptions.None)
  .Select(s => (Byte) Int32.Parse(s.Substring(2), AllowHexSpecifier));
2 голосов
/ 13 апреля 2011

Вам просто нужно проанализировать каждую строку. Поскольку каждое из них имеет только одно значение, вы можете сделать это:

byte b;
if (byte.TryParse(s, NumberStyles.HexNumber, 
    CultureInfo.InvariantCulture.NumberFormat, out b)) 
{
    // b contains the value.
}

где s - строка, которую вы хотите проанализировать, а b - полученное значение.

0 голосов
/ 19 марта 2013

Нечетная нечетная шестнадцатеричная строка верна.Проверьте источник, вы получите эту строку.Это из-за усечения строки из-за ограничения количества символов.Если строка изображение хранится в базе данных, то получить его с помощью программы без каких-либо инструментов

У меня была такая же проблема с .net и MSSQL, а также с помощью веб-сервиса и клиента Java

...