.net как преобразовать строку python repr () в байтовый массив? - PullRequest
0 голосов
/ 29 марта 2011

Есть ли какой-нибудь простой способ получить массив байтов экранированной строки (стиль Python repr ()), предоставленный в качестве ввода TextBox?

Пример:

Я хочу преобразовать строку следующим образом:

"ab\\x01c"

для массива следующим образом:

array[0] = 0x61;  
array[1] = 0x62;  
array[2] = 0x01;  
array[3] = 0x63;  

1 Ответ

3 голосов
/ 29 марта 2011

Вы можете попробовать следующее:

using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
...
private string HexToStringMatchEvaluator(Match match)
{
    int intValue = int.Parse(match.Groups[1].Value, NumberStyles.AllowHexSpecifier);
    return Convert.ToChar(intValue).ToString();
}
...
string source = "ab\\x01c";
source = Regex.Replace(source, @"\\x(\d\d)", HexToStringMatchEvaluator);
byte[] bytes = Encoding.ASCII.GetBytes(source);

Краткое объяснение:

Regex.Replace ищет вхождения \x, за которыми следуют две цифры, и передает каждую Match в наш пользовательский MatchEvaluator. Оценщик преобразует указанное значение из шестнадцатеричного в десятичное и затем в эквивалентный ему символ Юникода. Надеюсь, все остальное очевидно.

Надеюсь, это поможет.

...