powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / строку в байты
25 сообщений из 31, страница 1 из 2
строку в байты
    #39966078
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я посылаю строку
Код: c#
1.
2.
str = "123";
serial_port.Write(str);


то строка посылается в ASCII - 0x31 0x32 0x33
а мне надо аослать именно 1 2 3
перевожу
Код: c#
1.
 byte[] bytes = Encoding.ASCII.GetBytes(str);


но все равно вижу в bytes 0x31 0x32 0x33
как сконвертировать?
...
Рейтинг: 0 / 0
строку в байты
    #39966086
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если строка будет "12й¼±╣", то какие байты надо будет послать?
...
Рейтинг: 0 / 0
строку в байты
    #39966096
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны
А если строка будет "12й¼±╣", то какие байты надо будет послать?

ну чтож резонное замечание. ну я в данный момент посылаю численные значения, у меня для этого чек бокс есть. вручную отнимать - 0x30?

Код: c#
1.
2.
3.
4.
5.
6.
 byte[] bytes = Encoding.ASCII.GetBytes(str);
 for (int i = 0; i < bytes.Length; i++)
{
        bytes[i] = (byte)(bytes[i] - 0x30);
}
serial_port.Write(bytes, 0, bytes.Length);
...
Рейтинг: 0 / 0
строку в байты
    #39966097
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это викторина на "угадай, что такое serial_port"?
...
Рейтинг: 0 / 0
строку в байты
    #39966099
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
но все равно вижу в bytes 0x31 0x32 0x33

Это и есть строка "123" в кодировке ASCII

Коды символов ASCII до 127 совпадают с UTF-8, т.е. если писать "123", то итого будет одинаковое в обоих кодировках.
...
Рейтинг: 0 / 0
строку в байты
    #39966105
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
jenya7
но все равно вижу в bytes 0x31 0x32 0x33

Это и есть строка "123" в кодировке ASCII

Коды символов ASCII до 127 совпадают с UTF-8, т.е. если писать "123", то итого будет одинаковое в обоих кодировках.

но мне надо по серийному порту послать 1 2 3 а не их ASCII представление 0x31 0x32 0x33
...
Рейтинг: 0 / 0
строку в байты
    #39966107
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Dima T
пропущено...

Это и есть строка "123" в кодировке ASCII

Коды символов ASCII до 127 совпадают с UTF-8, т.е. если писать "123", то итого будет одинаковое в обоих кодировках.

но мне надо по серийному порту послать 1 2 3 а не их ASCII представление 0x31 0x32 0x33

Если тебе надо послать байты 0x1 0x2 0x3, то делай минус 0x30.
0x30 это код символа 0.
...
Рейтинг: 0 / 0
строку в байты
    #39966108
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
jenya7
пропущено...

но мне надо по серийному порту послать 1 2 3 а не их ASCII представление 0x31 0x32 0x33

Если тебе надо послать байты 0x1 0x2 0x3, то делай минус 0x30.
0x30 это код символа 0.

минус это понятно. я думал что есть метод который переводит из ASCII в число.
...
Рейтинг: 0 / 0
строку в байты
    #39966111
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Dima T
пропущено...

Если тебе надо послать байты 0x1 0x2 0x3, то делай минус 0x30.
0x30 это код символа 0.

минус это понятно. я думал что есть метод который переводит из ASCII в число.

При чем тут вообще ASCII?
Тебе надо поразрядно символ-цифру превратить в число типа byte.
https://stackoverflow.com/questions/3665757/how-to-convert-char-to-int/3666138
И потом все это сохранить в массив byte[]

Готового скорее всего нет, потому что подобное никому не надо.
...
Рейтинг: 0 / 0
строку в байты
    #39966120
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
jenya7
пропущено...

минус это понятно. я думал что есть метод который переводит из ASCII в число.

При чем тут вообще ASCII?
Тебе надо поразрядно символ-цифру превратить в число типа byte.
https://stackoverflow.com/questions/3665757/how-to-convert-char-to-int/3666138
И потом все это сохранить в массив byte[]

Готового скорее всего нет, потому что подобное никому не надо.

здрасте! не надо! есть случаи когда принимающая сторона не парсит ASCII чары. она должна принять 1 - пошли ей 1 а не 0x31.
...
Рейтинг: 0 / 0
строку в байты
    #39966127
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Ты, наконец-то можешь объяснить, как работает загадочный метод "Write" не менее загадочного объекта "serial_port"? Меня удивляет не сам бестолковый вопрос (к этому тут все давно привыкшие), а то, сколько народу кинулись тут же давать советы.
...
Рейтинг: 0 / 0
строку в байты
    #39966131
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat
jenya7,

Ты, наконец-то можешь объяснить, как работает загадочный метод "Write" не менее загадочного объекта "serial_port"? Меня удивляет не сам бестолковый вопрос (к этому тут все давно привыкшие), а то, сколько народу кинулись тут же давать советы.

стандартный серийный порт и его методы
Код: c#
1.
serial_port = new SerialPort();
...
Рейтинг: 0 / 0
строку в байты
    #39966132
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Dima T
пропущено...

При чем тут вообще ASCII?
Тебе надо поразрядно символ-цифру превратить в число типа byte.
https://stackoverflow.com/questions/3665757/how-to-convert-char-to-int/3666138
И потом все это сохранить в массив byte[]

Готового скорее всего нет, потому что подобное никому не надо.

здрасте! не надо! есть случаи когда принимающая сторона не парсит ASCII чары. она должна принять 1 - пошли ей 1 а не 0x31.

Обычно либо шлют строки в какой-то кодировке (например ASCII), тогда цифры это символы, т.е. 0x31 0x32 0x33, либо числа (бинарный вид), тогда это один байт со значением 123 (0x7B), или несколько байт в зависимости от типа, например int это 4 байта (0x7B 0x0 0x0 0x0).
Но никто не шлет отдельными байтами значения десятичных разрядов числа (0x1 0x2 0x3).
...
Рейтинг: 0 / 0
строку в байты
    #39966134
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Любая цифровая информация передаётся по интерфейсам в бинарном виде. Т.е., в байтах.
...
Рейтинг: 0 / 0
строку в байты
    #39966141
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
fkthat
jenya7,

Ты, наконец-то можешь объяснить, как работает загадочный метод "Write" не менее загадочного объекта "serial_port"? Меня удивляет не сам бестолковый вопрос (к этому тут все давно привыкшие), а то, сколько народу кинулись тут же давать советы.

стандартный серийный порт и его методы
Код: c#
1.
serial_port = new SerialPort();



https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.write?view=dotnet-plat-ext-3.1#System_IO_Ports_SerialPort_Write_System_Byte___System_Int32_System_Int32_]Write(Byte[], Int32, Int32)

Код: c#
1.
serial_port.Write(new byte[]{ 0x01, 0x02, 0x03 }, 0, 3);


это все что тебе надо.
...
Рейтинг: 0 / 0
строку в байты
    #39966145
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat
jenya7
пропущено...

стандартный серийный порт и его методы
Код: c#
1.
serial_port = new SerialPort();



https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.write?view=dotnet-plat-ext-3.1#System_IO_Ports_SerialPort_Write_System_Byte___System_Int32_System_Int32_]Write(Byte[], Int32, Int32)

Код: c#
1.
serial_port.Write(new byte[]{ 0x01, 0x02, 0x03 }, 0, 3);


это все что тебе надо.

у меня что с потолка упал new byte[]{ 0x01, 0x02, 0x03 }. мне печатают в текст боксе 123 - а я беру из текст бокса "123" строку. текст бокс строки выдает.
...
Рейтинг: 0 / 0
строку в байты
    #39966148
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
fkthat
пропущено...


https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.write?view=dotnet-plat-ext-3.1#System_IO_Ports_SerialPort_Write_System_Byte___System_Int32_System_Int32_]Write(Byte[], Int32, Int32)

Код: c#
1.
serial_port.Write(new byte[]{ 0x01, 0x02, 0x03 }, 0, 3);


это все что тебе надо.

у меня что с потолка упал new byte[]{ 0x01, 0x02, 0x03 }. мне печатают в текст боксе 123 - а я беру из текст бокса "123" строку. текст бокс строки выдает.

Откуда кому-то знать с потолка, стен, или соседского подвала у тебя оно берется.
Код: c#
1.
2.
var buf = str.Select(c => byte.Parse(c.ToString()).ToArray();
serialPort.Write(buf, 0, buf.Length);
...
Рейтинг: 0 / 0
строку в байты
    #39966153
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
мне печатают в текст боксе 123 - а я беру из текст бокса "123"
как по мне, тут два логичных варианта отправки
Код: c#
1.
0x31 0x32 0x33

Код: c#
1.
0x7B


Потому что непонятно, из-за чего строка 123 из текстбокса трактуется как байты 1;2;3, а не скажем, 12;3 или 1;23...
...
Рейтинг: 0 / 0
строку в байты
    #39966154
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну то есть, а что собственно должен ввести в текстбокс человек, который хочет отправить в порт байт с значением 18, к примеру...
...
Рейтинг: 0 / 0
строку в байты
    #39966166
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
ну то есть, а что собственно должен ввести в текстбокс человек, который хочет отправить в порт байт с значением 18, к примеру...

Вот это:
...
Рейтинг: 0 / 0
строку в байты
    #39966187
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
jenya7
мне печатают в текст боксе 123 - а я беру из текст бокса "123"
как по мне, тут два логичных варианта отправки
Код: c#
1.
0x31 0x32 0x33

Код: c#
1.
0x7B


Потому что непонятно, из-за чего строка 123 из текстбокса трактуется как байты 1;2;3, а не скажем, 12;3 или 1;23...

ок. тогда так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string[] args = str.Split(' ');
byte b;

byte[] bytes = new byte[args.Length];

for (int i = 0; i < bytes.Length; i++)
{
       Byte.TryParse(args[i], out b);
       bytes[i] = b;
}
serial_port.Write(bytes, 0, bytes.Length);


и вводить с пробелами 1 23 45 678
...
Рейтинг: 0 / 0
строку в байты
    #39966189
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, видишь как, стоило только сформулировать задачу, как сразу появилось Byte.Parse, и никаких вычитаний не потребовалось внезапно, а то ASCII какие-то в вопросе...

Еще бы Linq освоить и вообще всё в одну строчку можно было написать
...
Рейтинг: 0 / 0
строку в байты
    #39966192
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы, конечно, проверку добавил, а то в случае неправильного ввода ошибки не будет - 0 отправится...
...
Рейтинг: 0 / 0
строку в байты
    #39966193
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Во, видишь как, стоило только сформулировать задачу, как сразу появилось Byte.Parse, и никаких вычитаний не потребовалось внезапно, а то ASCII какие-то в вопросе...

Еще бы Linq освоить и вообще всё в одну строчку можно было написать

я ему еще полтора часа назад в одну строчку написал.
...
Рейтинг: 0 / 0
строку в байты
    #39966196
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat
Shocker.Pro
Во, видишь как, стоило только сформулировать задачу, как сразу появилось Byte.Parse, и никаких вычитаний не потребовалось внезапно, а то ASCII какие-то в вопросе...

Еще бы Linq освоить и вообще всё в одну строчку можно было написать

я ему еще полтора часа назад в одну строчку написал.

а можно сюда вставить сплит?
Код: c#
1.
var buf = str.Select(c => byte.Parse(c.ToString()).ToArray();
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / строку в байты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]