Вверх ↑
Этот топик читают: Гость
Ответов: 109
Рейтинг: 1
#16: 2025-07-23 10:02:29 ЛС | профиль | цитата
У меня есть Hex число 24 знака. 45 52 00 1E 84 80 00 1E 84 80 01 01 но конвертеры Hex-Int затем Int-Char почему то не конвертируют его. Пробовал по 8 знаков выдавать не работает.

Редактировалось 4 раз(а), последний 2025-07-23 11:57:13
карма: 1

0
Ответов: 109
Рейтинг: 1
#17: 2025-07-23 11:48:49 ЛС | профиль | цитата
Не получается преобразовать Hex число "00" в текстовый символ. Вообще никакой, не UTF-8, не ASCII, а на com порту это число присутствует (видно на перехватчике) Как конвертировать "00" ?
карма: 1

0
Ответов: 8961
Рейтинг: 824
#18: 2025-07-23 13:47:11 ЛС | профиль | цитата
Andrej77rv,то, что вы напмсали:
Andrej77rv писал(а):
45 52 00 1E 84 80 00 1E 84 80 01 01
это не число, но массив двухразрядных HEX чисел разделённых пробелом. Их надо преобразовывать по отдельности.
В HiAsm самое многоразрядное целое -- Int64 -- +-10^19 или не более 15 HEX чисел.
Среди 256 символов есть несколько "не отображаемых", "00" в их числе.
карма: 19

0
Ответов: 109
Рейтинг: 1
#19: 2025-07-23 14:12:17 ЛС | профиль | цитата
Леонид писал(а):
Среди 256 символов есть несколько "не отображаемых", "00" в их числе.

По моему не отображаемых очень много. 1E, 84, 80 тоже никак не конвертируются. Очень жаль. Подать команду для считывания ПЗС линейки не получится.
карма: 1

0
Ответов: 2437
Рейтинг: 693
#20: 2025-07-24 11:36:10 ЛС | профиль | цитата
Andrej77rv писал(а):
но конвертеры Hex-Int затем Int-Char почему то не конвертируют его
Где схема подтверждающая что не работает?
Andrej77rv писал(а):
Не получается преобразовать Hex число "00" в текстовый символ.

А какой символ вы хотите увидеть? Да и зачем собственно? Переводить Hex в символы имеет смысл если это текст и вы планируете что-то прочесть, после конвертации.
Add(MainForm,11785888,210,189)
{
Width=293
Height=453
link(onCreate,4712747:doEnum,[(250,209)(250,195)])
}
Add(Memory,14944199,259,140)
{
Default=String(45 52 00 1E 84 80 00 1E 84 80 01 01)
AddHint(-83,-56,187,26,Default)
}
Add(Str_Enum,4712747,259,189)
{
Delimiter=" "
link(onEnum,8976480:doConvert,[])
link(String,14944199:Value,[])
}
Add(ConvertorEx,8976480,301,189)
{
Mode=5
link(onResult,3102950:doConvert,[])
}
Add(ListBox,15207858,385,189)
{
Left=5
Top=10
Width=265
Height=395
Font=[MS Sans Serif,12,0,0,1]
}
Add(ConvertorEx,3102950,343,189)
{
Mode=4
link(onResult,15207858:doAdd,[])
}

}
Что к примеру вам дает такое отображение? Вы хотите пощупать пустоту? Или услышать тишину? Я это к тому что 00 в Hex это ноль и в Int, а у Char это пустота, что и видно на схеме. Можете заглянуть в любой шрифт и посмотреть какой символ стоит первым по значению 0.
Вот к примеру: https://www.petefreitag.com/cheatsheets/ascii-codes/
Andrej77rv писал(а):
Подать команду для считывания ПЗС линейки не получится.
То что вы не видите воздух вам же дышать не мешает. Если вы не видите символ, то это еще не значит что его нельзя передать. Вопрос в общем-то сводиться к одному, зачем вам его видеть именно как символ? Чтобы что?

Вот вам для наглядности схема:
Add(MainForm,2953706,49,203)
{
Width=584
Height=397
link(onCreate,4712747:doEnum,[])
}
Add(Memory,14944199,119,168)
{
Default=String(45 52 00 1E 84 80 00 1E 84 80 01 01)
AddHint(-83,-56,187,26,Default)
}
Add(Str_Enum,4712747,119,217)
{
Delimiter=" "
link(onEnum,8976480:doConvert,[])
link(onEndEnum,12733290:doEvent1,[(156,230)(156,293)])
link(String,14944199:Value,[])
}
Add(ConvertorEx,8976480,168,217)
{
Mode=5
link(onResult,3102950:doConvert,[])
}
Add(ConvertorEx,3102950,210,217)
{
Mode=4
link(onResult,5610725:doStrCat,[])
}
Add(StrCat,5610725,280,217)
{
Point(doClear)
link(Str1,1178670:Var1,[(286,205)(274,205)(274,261)])
}
Add(DoData,14672846,280,287)
{
link(onEventData,8109346:doValue,[])
link(Data,1178670:Var2,[])
}
Add(GetDataEx,1178670,280,256)
{
link(Data,5610725:Result,[])
}
Add(Length,15979923,490,210)
{
link(onLength,8283478:doStrCat,[])
}
Add(Hub,15727579,427,287)
{
link(onEvent1,15979923:doLength,[(465,293)(465,216)])
link(onEvent2,16154807:doText,[])
}
Add(Label,12977082,574,210)
{
Left=5
Top=5
Font=[MS Sans Serif,12,0,0,1]
}
Add(StrCat,8283478,532,210)
{
Str1="Длинна строки в символах: "
link(onStrCat,12977082:doText,[])
AddHint(-69,-53,159,13,Str1)
}
Add(Edit,16154807,490,294)
{
Left=5
Top=30
Width=260
Height=25
Font=[MS Sans Serif,12,0,0,1]
}
Add(Str_Enum,12409408,385,469)
{
Delimiter=""
link(onEnum,12837830:doConvert,[])
link(onEndEnum,7556775:doText,[(433,482)(433,559)])
link(String,8109346:Value,[])
}
Add(Memory,8109346,385,287)
{
@Hint=#10:строка тут|
link(onData,15727579:doEvent1,[])
AddHint(-27,-37,68,13,@Hint)
}
Add(Button,4664207,280,469)
{
Left=25
Top=70
Width=95
Height=30
Font=[MS Sans Serif,12,0,0,1]
Caption="Проверка"
link(onClick,12409408:doEnum,[])
}
Add(ConvertorEx,12837830,483,469)
{
Mode=3
link(onResult,11509053:doConvert,[])
}
Add(ConvertorEx,11509053,532,469)
{
Mode=6
link(onResult,524377:doStrCatDlm,[])
}
Add(Label,7556775,616,553)
{
Left=140
Top=75
Width=4
Height=4
Font=[MS Sans Serif,12,0,0,1]
Caption=""
link(Text,12157360:Var2,[])
}
Add(Hub,12733290,245,287)
{
link(onEvent1,14672846:doData,[])
link(onEvent2,5610725:doClear,[(269,300)(269,230)])
}
Add(StrCatDelim,524377,616,469)
{
Str2=" "
link(Str1,12157360:Var1,[(622,457)(613,457)(613,516)])
}
Add(GetDataEx,12157360,616,511)
{
link(Data,524377:Result,[])
}
Add(InfoTip,14183585,273,434)
{
Info=#35:Конвертировать строку обратно в Hex|
Width=449
Height=172
}
Строка конвертируется в символы, их количество 12 и их можно конвертировать обратно в Hex. Но отобразить стандартно не получиться.
Если вам в Com порт посылать то должно хватить.

А это так для понимания что строка не всегда то что ты видишь:
Add(MainForm,2953706,77,273)
{
Width=325
Height=223
}
Add(Edit,5704432,210,147)
{
Left=75
Top=55
Text="\0"
}
Add(Edit,3082782,287,147)
{
Left=135
Top=55
Text="\10"
}
Add(Button,13769784,147,266)
{
Left=195
Top=55
Caption="Равны?"
link(onClick,2864572:doCompare,[])
}
Add(If_else,2864572,210,266)
{
link(onTrue,6094948:doMessage,[])
link(onFalse,14695700:doMessage,[(282,279)(282,335)])
link(Op1,5704432:Text,[])
link(Op2,3082782:Text,[(223,222)(293,222)])
}
Add(Message,6094948,322,266)
{
Message="Да"
}
Add(Message,14695700,322,329)
{
Message="Нет"
}
Add(Edit,2089334,210,406)
{
Left=75
Top=105
Text=""
}
Add(Edit,12136484,287,406)
{
Left=135
Top=105
Text=""
}
Add(Button,6571360,147,525)
{
Left=195
Top=105
Caption="Равны?"
link(onClick,13875886:doCompare,[])
}
Add(If_else,13875886,210,525)
{
link(onTrue,5754090:doMessage,[])
link(onFalse,3595927:doMessage,[(282,538)(282,594)])
link(Op1,2089334:Text,[])
link(Op2,12136484:Text,[(223,481)(293,481)])
}
Add(Message,5754090,322,525)
{
Message="Да"
}
Add(Message,3595927,322,588)
{
Message="Нет"
}
Для пользователя данные (их отсутствие) во всех текстовых полях одинаковые, но это не так.

Редактировалось 2 раз(а), последний 2025-07-24 12:08:09
карма: 11

0
Ответов: 109
Рейтинг: 1
#21: 2025-07-24 12:20:14 ЛС | профиль | цитата
sla8a писал(а):
Вопрос в общем-то сводиться к одному, зачем вам его видеть именно как символ? Чтобы что?

Чтобы получить на кабеле порта 00. А для 00 нет такого символа. Но можно сделать по другому как мне подсказали HEX-Str.

Редактировалось 1 раз(а), последний 2025-07-24 12:20:40
карма: 1

0
Ответов: 2437
Рейтинг: 693
#22: 2025-07-24 12:49:33 ЛС | профиль | цитата
Andrej77rv писал(а):
Чтобы получить на кабеле порта 00. А для 00 нет такого символа.
Это не ответ на вопрос. Вы определитесь вам нужно видеть или достаточно передать. Если передать то выложенная мной схема показывает как это сделать и все символы есть. Длинна строки это подтверждает.
карма: 11

0
Ответов: 109
Рейтинг: 1
#23: 2025-07-24 12:57:50 ЛС | профиль | цитата
sla8a писал(а):
Вы определитесь вам нужно видеть или достаточно передать

Достаточно передать

--- Добавлено в 2025-07-24 12:58:43

Я уже нашел ответ на свой вопрос. Тема закрыта

Редактировалось 1 раз(а), последний 2025-07-24 12:58:43
карма: 1

0
23
Сообщение
...
Прикрепленные файлы
(файлы не залиты)