В настоящее время я работаю над некоторым кодированием и декодированием строки в Python. Я должен был преобразовать некоторый код из C # в python, однако я столкнулся с некоторой проблемой, как показано ниже:
Так что теперь у меня есть строка, которая выглядит следующим образом: 21-20-89-00-67-00-45-78
Код должен был исключить -
между числами и упакованы 2 целых числа в 1 группу, а затем преобразовать их в байты. В C # это было сделано следующим образом:
var value = "21-20-89-00-67-00-45-78";
var valueNoDash = value.Replace("-", null);
for (var i = 0; i < DataSizeInByte; i++)
{
//convert every 2 digits into 1 byte
Data[i] = Convert.ToByte(valueNoDash.Substring(i * 2, 2), 16);
}
Приведенный выше код представляет Шаг 1: Удалите -
из строки, Шаг 2: используйте метод Substring, чтобы разделить их на 2 цифры в 1 группе, Шаг3: используйте Convert.ToByte с основанием 16, чтобы преобразовать их в 16-разрядное целое число без знака. Результат в Data
равен
33
32
137
0
103
0
69
120
Пока что у меня нет проблем с этим кодом C #, однако, когда я пытаюсь сделать то же самое в Python, я не могу получить тот же результат, что и код C #,Мой код Python выглядит следующим образом:
from textwrap import wrap
import struct
values = "21-20-89-00-67-00-45-78"
values_no_dash = a.replace('-', '')
values_grouped = wrap(b, 2)
values_list = []
for value in values_grouped:
values_list.append(struct.pack('i', int(value)))
В Python он дает мне список байтов в шестнадцатеричном значении, как показано ниже:
b'\x15\x00\x00\x00'
b'\x14\x00\x00\x00'
b'Y\x00\x00\x00'
b'\x00\x00\x00\x00'
b'C\x00\x00\x00'
b'\x00\x00\x00\x00'
b'-\x00\x00\x00'
b'N\x00\x00\x00'
Это объект в байтах, однакокогда я преобразовал этот объект в десятичную, он дает мне то же значение, что и исходная строка: 21, 20, 89, 0, 67, 0, 45, 78
.
Что означает, что я не преобразовал успешно в 16-разрядное целое число без знака, верно? Как я могу сделать это в Python? Я пытался использовать str.encode()
, но результат все еще другой. Как мне добиться того, что C # сделал в python?
Спасибо и признателен, если кто-нибудь может помочь!