5 / 5 / 1
Регистрация: 21.09.2013
Сообщений: 66
1
.NET 4.x

Преобразовать строку в hex

27.02.2014, 15:22. Показов 18809. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста! Как преобразовать строку TextBox-a в массив байтов? Ввожу в TextBox "222222" (без кавычек) в listBox каждая "2" у меня отображается символ "32". То есть, если я правильно понимаю, программа берет значение "2" в hex этот символ "32". Как мне сделать чтобы в массив падало значение именно 2!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string password = boxPass.Text;
            char[] letter = password.ToCharArray();
            byte[] array = new byte[6];
            for (int i = 0; i < letter.Length; i++)
            {
                array[i] = Convert.ToByte(letter[i]);
            }
                array.CopyTo(send, 3);
            byte[] buffCRC = CRC(send, 0, 9);
            buffCRC.CopyTo(send, 9);
            foreach (byte input in send)
            {
                listBox1.Items.Add(input.ToString("X2"));
            }
            }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2014, 15:22
Ответы с готовыми решениями:

Преобразовать HEX значение в нужный формат
9747 перевожу в Hex так : private void simpleButton1_Click(object sender, EventArgs e) ...

Hex в строку
Здравствуйте, как можно сделать, что бы конвертировать hex в строку?

Перевод HEX в строку
Мне тут очень помогли с переводом строки в Hex. Теперь что-то не получается обратная задача - надо...

HEX строку в ASCII
Добрый день! Подскажите, по работе с COM портом, мне надо передавать символы по таблице ASCII,...

8
5 / 5 / 3
Регистрация: 18.02.2014
Сообщений: 17
27.02.2014, 15:59 2
А если так?
C#
1
listBox1.Items.Add((char)input);
Добавлено через 3 минуты
А вообще твой код можно немного сократить, т.к. строка в C# представляет собой массив символов:

C#
1
2
3
4
foreach (byte input in boxPass.Text)
            {
                listBox1.Items.Add((char)input);
            }
0
5 / 5 / 1
Регистрация: 21.09.2013
Сообщений: 66
27.02.2014, 16:06  [ТС] 3
Спасибо! Но так не подойдет. Мне надо в массив подать число "2" иммено в hex, а не эквивалент "2" в ascii, который в hex - "32". в listbox-е данные я отображаю для себя, на программу они смысловую нагрузку не несут.

Писать свою реализацию конвертирования?
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
27.02.2014, 16:28 4
Цитата Сообщение от kladim Посмотреть сообщение
"2" иммено в hex, а не эквивалент "2" в ascii, который в hex - "32"
hex - это шестнадцатеричная система счисления... в общем... табличка соответствий (hex-dec)

Кликните здесь для просмотра всего текста
0 - 0
1 - 1
2 - 2
3 - 3
4 - 4
5 - 5
6 - 6
7 - 7
8 - 8
9 - 9
A - 10
B - 11
C - 12
D - 13
E - 14
F - 15
10 - 16
...
FF - 255


так что необходимо грамотней сформулировать вопрос, а то он какой то сам себе противоречивый и непонятный.
0
5 / 5 / 1
Регистрация: 21.09.2013
Сообщений: 66
27.02.2014, 16:33  [ТС] 5
хочу в массив положить число 2. Когда программа считывает значение из textboxa = 2, в массив попадает число 32. число 0х32 = 2 ascii. А мне надо 0х2
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
27.02.2014, 16:48 6
Цитата Сообщение от kladim Посмотреть сообщение
C#
1
listBox1.Items.Add(input.ToString("X2"));
C#
1
listBox1.Items.Add(Convert.ToChar(input));
и да, вы усложняете.
и да, конструкция "hex в ansii" довольно корява
и да, код символа "2" в таблице ansii - 32

Добавлено через 3 минуты
в итоге у вас получится именно то что вы ввели. и hex тут ни при чем. вы вводили строку, строку разбивали на массив символов, каждый символ имеет своё представление в таблице ansii (а хотя вру, не каждый)...

и что это было, "FF02" или "saDSxZ" совершенно не имеет к системам счисления никакого отношения.

Добавлено через 10 минут
если же вы всё-же пытались получить сначала массив байт, значений того что введено, а потом преобразовать это обратно в шестнадцатеричное число, то вот пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string letter = "12D4";
                byte[] array = new byte[letter.Length];
                for (int i = 0; i < letter.Length; i++)
                    array[i] = Convert.ToByte(Convert.ToString(letter[i]), 16);
 
//array будет иметь эллементы:
//   0x01,0x02,0x0D,0x04
 
                int inpt = 0;
                for (int i = 0; i < array.Length; i++)
                    inpt += array[i] << ((array.Length - i - 1) * 4);
 
                Console.WriteLine(inpt.ToString("X"));
//вывод: "12D4"
0
5 / 5 / 1
Регистрация: 21.09.2013
Сообщений: 66
27.02.2014, 22:47  [ТС] 7
ввожу в textBox "222222"
C#
1
2
3
4
5
6
7
8
9
string password = boxPass.Text;
byte[] array = new byte[password.Length];
for (int i = 0; i < password.Length; i++)
     {
                array[i] = Convert.ToByte(Convert.ToString(password[i],16));
      }
/....../
 
listBox1.Items.Add(input.ToString("X"));
Только теперь в массиве байт хранится числа "20 20 20 20 20 20"

Добавлено через 23 минуты
То есть, у меня не получится стандартными средствами языка преобразовать строку(массив символов)"222222" из textBox-a в массив байтов(0х2 0х2 0х2 0х2 0х2 0х2)?

Хотя вот этот код работает. Если я в textBox ввожу 13 на выходе получаю D
C#
1
send[0] = byte.Parse(boxAddress.Text);
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
28.02.2014, 10:19 8
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от kladim Посмотреть сообщение
array[i] = Convert.ToByte(Convert.ToString(password[i],16));
не там закрывающая скобка после преобразования в строку.

Добавлено через 12 секунд
C#
1
array[i] = Convert.ToByte(Convert.ToString(password[i]),16);
1
5 / 5 / 1
Регистрация: 21.09.2013
Сообщений: 66
28.02.2014, 10:43  [ТС] 9
Помогло! Спасибо большое! + Вам)
0
28.02.2014, 10:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2014, 10:43
Помогаю со студенческими работами здесь

Как перекодировать строку в hex
В дебрях интернета нашел антипод этого функционала. Метод переводит Из hex в строку string...

Распознать строку как HEX
Доброго дня. Имеется текстовый файл со строками вида &quot;8124D3&quot; Это уже шестнадцатиричное...

Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N,
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина...

Как вернуть HEX (с форматированием, использовались регулярные выражения) в строку
В общем это выглядит вот так: static void Main(string args) { string input =...

Как правильно распарсить поток и преобразовать его для отображения в hex виде
Здравствуйте. Подскажите пожалуйста как преобразовать тот поток что читается из любого файла в...

Перевод строки в hex-строку из кодов символов
Написать конвертер на C#, который конвертирует слово в символы. Например вася -&gt; e2e0f1ff Хотелось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru