Преобразование байта Python в формате строки в массив байтов в C # - PullRequest
0 голосов
/ 26 октября 2018

В моем коде Python у меня есть значение в байтовом коде, всякий раз, когда вы печатаете этот байтовый код, он будет давать что-то вроде этого,

b'\xe0\xb6\x9c\xe0\xb7\x92\xe0\xb6\xb1\xe0\xb7\x8a\xe0\xb6\xaf\xe0\xb6\xbb'

сейчас, это значение в строковом формате в c #, то есть

string byteString = "b'\xe0\xb6\x9c\xe0\xb7\x92\xe0\xb6\xb1\xe0\xb7\x8a\xe0\xb6\xaf\xe0\xb6\xbb'";

поэтому вопрос заключается в том, как я могу преобразовать эту byteString в байтовый массив в c #

, но моя настоящая проблема заключается в том, что у меня есть строковое значение в python, которое не на английском, когда я запускаюКод Python будет печатать строку (не на английском, работает нормально).Но всякий раз, когда запускаю этот код Python в C # из класса процесса, он отлично работает для английского языка, и я могу получить значение.но это не работает для не английских символов, это было нулевое значение.следовательно, в python, если я распечатаю это не английское значение в байтовом коде, я могу получить значение в c #.Проблема в том, как я могу преобразовать это в байтовом коде в байтовый массив в C #.

1 Ответ

0 голосов
/ 26 октября 2018

Во-первых, вы хотите немного изменить строку для использования в C #.

var str = "\xe0\xb6\x9c\xe0\xb7\x92\xe0\xb6\xb1\xe0\xb7\x8a\xe0\xb6\xaf\xe0\xb6\xbb";

Затем вы можете довольно легко получить ваши байты с помощью LINQ.

var bytes = str.Select(x => Convert.ToByte(x)).ToArray();

Странный случай, когдаЭто может произойти при попытке использовать строки байтов между Python и C # в том, что python иногда будет выводить прямые символы ASCII для определенных значений байтов, оставляя вас со смешанной строкой, такой как b'\xe0ello'.C # распознает \x##, но также пытается проанализировать \x####, что может привести к разрыву при работе с выходной строкой python, которая смешивает шестнадцатеричные коды и ascii.

...