У меня есть текстовое поле в форме, где человек вводит в массив байтов в формате, показанном ниже.преобразовать строковый массив байтовых значений в байтовый массив
Вопрос в том, как я могу преобразовать массив строк, созданный в массив байтов с одинаковыми значениями?
так что это будет ввести в текстовое поле:
0x11, 0x01, 0x49, 0x4D, 0x41, 0x47, 0x45, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x53, 0x75, 0x6D, 0x6D, 0x61, 0x72, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
следующий код затем раскалывает его и преобразует его в массив байтов
string text = txtChecksumText.Text;
string[] parts = text.Split(new string[] { ", " }, StringSplitOptions.None);
byte[] bytes = new byte[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
bytes[i] = Convert.ToByte(parts[i], 16); // this isn't working as expected
txtResponse.Text += Environment.NewLine + " " + i + " = " + parts[i] + " = " + bytes[i].ToString() ;
}
и ответ, чтобы показать, что это не рабочий
0 = 0x11 = 17
1 = 0x01 = 1
2 = 0x49 = 73
3 = 0x4D = 77
4 = 0x41 = 65
5 = 0x47 = 71
6 = 0x45 = 69
7 = 0x31 = 49
8 = 0x00 = 0
9 = 0x00 = 0
10 = 0x00 = 0
11 = 0x00 = 0
12 = 0x00 = 0
13 = 0x00 = 0
14 = 0x00 = 0
15 = 0x00 = 0
16 = 0x00 = 0
17 = 0x00 = 0
18 = 0x00 = 0
19 = 0x00 = 0
20 = 0x00 = 0
21 = 0x00 = 0
22 = 0x00 = 0
23 = 0x01 = 1
24 = 0x53 = 83
25 = 0x75 = 117
26 = 0x6D = 109
27 = 0x6D = 109
28 = 0x61 = 97
29 = 0x72 = 114
30 = 0x79 = 121
31 = 0x00 = 0
32 = 0x00 = 0
33 = 0x00 = 0
34 = 0x00 = 0
35 = 0x00 = 0
36 = 0x00 = 0
37 = 0x00 = 0
38 = 0x00 = 0
39 = 0x00 = 0
40 = 0x00 = 0
41 = 0x00 = 0
42 = 0x00 = 0
43 = 0x00 = 0
44 = 0x00 = 0
45 = 0x00 = 0
46 = 0x00 = 0
47 = 0x00 = 0
48 = 0x00 = 0
49 = 0x00 = 0
50 = 0x00 = 0
51 = 0x00 = 0
52 = 0x00 = 0
53 = 0x00 = 0
54 = 0x00 = 0
55 = 0x00 = 0
Для того чтобы быть ясным, 0x11 должен возвращаться как байт 11, а не байт 1 7, то же самое со всеми остальными, которые я не пытаюсь преобразовать в десятичную, я пытаюсь преобразовать строку литеральных байтов в массив байтов для создания контрольной суммы
Извините за вопрос, но что не работает? Насколько я понимаю, он работает нормально. –
Является ли проблема, что, например, 0x45 преобразуется в 69? Это потому, что 0x45 (45 шестнадцатеричных на самом деле 69 в десятичной форме) –
0x11 должен возвращаться как байт 11 не байт 17, то же самое со всеми остальными, которые я не пытаюсь преобразовать в десятичную, я пытаюсь преобразовать строку литеральных байтов в массив байтов для создания контрольной суммы – Neo