Вверх ↑
Этот топик читают: Гость
Ответов: 1186
Рейтинг: 27
#1: 2019-07-06 11:03:42 ЛС | профиль | цитата
Есть ли готовые решения перевода real в hex и наоборот ?
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1186
Рейтинг: 27
#2: 2019-07-06 15:48:33 ЛС | профиль | цитата
и вопрос ещё появился что за тип данных I64 ? в функции Str2Int64 вроде по логике должно выдавать тип данных Int64, а выдаёт I64
карма: 1

0
Ответов: 8364
Рейтинг: 776
#3: 2019-07-06 20:30:42 ЛС | профиль | цитата
Rysik, ошибки в последних знаках неизбежны, Hex таки целое, хотя и с десятичной точкой
hex


Add(MainForm,2953706,161,140)
{
}
Add(Edit,3537562,217,140)
{
Left=75
Top=10
Width=195
Text="123.456789"
ClearAfterEnter=1
}
Add(Button,10396681,161,189)
{
Left=20
Top=20
Width=20
Height=45
Caption="V\r\nV"
link(onClick,4544337:doRealHex,[])
}
Add(Edit,9300325,315,238)
{
Left=70
Top=95
Width=205
Text=""
ClearAfterEnter=1
}
Add(Edit,11527724,266,189)
{
Left=70
Top=45
Width=205
Text=""
link(onChange,15816590:doHexReal,[(305,195)(305,230)(256,230)(256,251)])
}
Add(MultiElementEx,15816590,266,238)
{
link(onRes,9300325:doText,[])
link(Real_Hex,11527724:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,9285825,21,21)
{
WorkCount=#9:doRealHex|9:doHexReal|
EventCount=#5:onRes|
VarCount=#3:Res|
DataCount=#8:Real_Hex|
Width=482
Height=263
VOffset=56
HOffset=21
link(doRealHex,8819271:doCalc,[])
link(doHexReal,3351337:doSplit,[(32,90)(32,181)])
link(Res,15030429:FString,[(48,263)(447,263)])
}
Add(StrPart,3351337,42,175)
{
Char="."
link(onSplit,7381523:doEvent1,[])
link(onPart,13913458:doConvert,[(81,188)(81,223)])
link(Str,14503192:Var2,[])
}
Add(Convertor,11449650,203,182)
{
Mode=5
link(onResult,11547339:doCalc,[])
}
Add(Convertor,13913458,91,217)
{
Mode=5
link(onResult,6212640:doWork3,[(130,223)(130,141)(431,141)])
}
Add(GetDataEx,14503192,42,42)
{
link(Data,9285825:Real_Hex,[])
}
Add(Str_Enum,16186188,154,182)
{
Delimiter=""
link(onEnum,11449650:doConvert,[])
link(onEndEnum,8534407:doSplit,[(193,195)(193,230)])
}
Add(Hub,7381523,91,175)
{
link(onEvent1,11547339:doClear,[(251,181)(251,195)])
link(onEvent2,16186188:doEnum,[])
}
Add(MathParse,11547339,259,182)
{
MathStr="%0+%1/(2^(4*%2))"
Point(doClear)
link(X2,16186188:NumSubStr,[(272,173)(244,173)(244,222)(160,222)])
}
Add(DoData,9429124,315,350)
{
}
Add(Convertor,11671509,385,35)
{
Mode=6
Digits=1
link(onResult,6212640:doWork2,[])
}
Add(Memory,7674351,441,35)
{
}
Add(MathParse,5494791,336,105)
{
DataCount=1
MathStr="frac(%1*16)"
link(onResult,10532359:doWork3,[(375,111)(375,90)(256,90)])
link(X1,15653650:Var3,[(342,82)])
}
Add(For,3432543,217,98)
{
End=13
link(onEvent,5534402:doCalc,[])
link(onStop,8243732:doData,[(256,111)(256,167)])
}
Add(Memory,9614223,266,42)
{
}
Add(MathParse,5534402,266,98)
{
DataCount=1
MathStr="trunc(%1*16)"
link(onResult,6228601:doEvent1,[])
link(X1,15653650:Var2,[])
}
Add(GetDataEx,15653650,266,77)
{
link(Data,9614223:Value,[])
}
Add(MathParse,8819271,63,77)
{
DataCount=1
MathStr="trunc(%1)"
link(onResult,531078:doEvent1,[])
link(X1,2009111:Var2,[])
}
Add(Hub,531078,112,77)
{
OutCount=3
link(onEvent1,11671509:doConvert,[(137,83)(137,41)])
link(onEvent2,15539180:doClear,[(137,90)(137,133)(426,133)(426,111)])
link(onEvent3,16615704:doCalc,[])
}
Add(Hub,13719750,189,91)
{
link(onEvent1,10532359:doWork2,[(214,97)(214,48)])
link(onEvent2,3432543:doFor,[])
}
Add(MathParse,16615704,147,91)
{
MathStr="frac(%1)"
link(onResult,13719750:doEvent1,[])
link(X1,2009111:Var3,[(153,68)])
}
Add(GetDataEx,2009111,63,63)
{
link(Data,14503192:Var3,[(69,47)])
}
Add(HubEx,10532359,252,42)
{
link(onEvent,9614223:doValue,[])
}
Add(Hub,6228601,308,98)
{
link(onEvent1,14158470:doConvert,[])
link(onEvent2,5494791:doCalc,[])
}
Add(Convertor,14158470,385,98)
{
Mode=6
Digits=1
link(onResult,15539180:doStrCat,[])
}
Add(StrCat,15539180,448,98)
{
Point(doClear)
link(Str1,10081430:Var3,[(454,89)(470,89)(470,139)])
}
Add(FormatStr,15030429,441,161)
{
Mask="%1.%2"
Point(FString)
link(onFString,9285825:onRes,[(487,167)(487,83)])
link(Str1,7674351:Value,[])
}
Add(GetDataEx,10081430,448,134)
{
link(Data,15539180:Result,[])
}
Add(HubEx,16568071,427,161)
{
link(onEvent,15030429:doString,[])
}
Add(HubEx,6212640,427,35)
{
link(onEvent,7674351:doValue,[])
}
Add(DoData,8243732,385,161)
{
link(onEventData,16568071:doWork2,[])
link(Data,10081430:Var2,[(391,145)(454,145)])
}
Add(StrPart,8534407,259,224)
{
Char="."
link(onSplit,16568071:doWork3,[(431,230)])
link(Str,11547339:Result,[])
}
END_SDK
Add(MultiElementEx,4544337,217,189)
{
link(onRes,11527724:doText,[])
link(Real_Hex,3537562:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,15193150,21,21)
{
WorkCount=#9:doRealHex|9:doHexReal|
EventCount=#5:onRes|
VarCount=#3:Res|
DataCount=#8:Real_Hex|
Width=482
Height=263
VOffset=56
HOffset=21
link(doRealHex,12381851:doCalc,[])
link(doHexReal,5999666:doSplit,[(32,90)(32,181)])
link(Res,3650275:FString,[(48,263)(447,263)])
}
Add(StrPart,5999666,42,175)
{
Char="."
link(onSplit,10429016:doEvent1,[])
link(onPart,6294294:doConvert,[(81,188)(81,223)])
link(Str,15517314:Var2,[])
}
Add(Convertor,14661722,203,182)
{
Mode=5
link(onResult,9347192:doCalc,[])
}
Add(Convertor,6294294,91,217)
{
Mode=5
link(onResult,5792052:doWork3,[(130,223)(130,141)(431,141)])
}
Add(GetDataEx,15517314,42,42)
{
link(Data,15193150:Real_Hex,[])
}
Add(Str_Enum,6100085,154,182)
{
Delimiter=""
link(onEnum,14661722:doConvert,[])
link(onEndEnum,8669169:doSplit,[(193,195)(193,230)])
}
Add(Hub,10429016,91,175)
{
link(onEvent1,9347192:doClear,[(251,181)(251,195)])
link(onEvent2,6100085:doEnum,[])
}
Add(MathParse,9347192,259,182)
{
MathStr="%0+%1/(2^(4*%2))"
Point(doClear)
link(X2,6100085:NumSubStr,[(272,173)(244,173)(244,222)(160,222)])
}
Add(DoData,5440160,315,350)
{
}
Add(Convertor,2856699,385,35)
{
Mode=6
Digits=1
link(onResult,5792052:doWork2,[])
}
Add(Memory,8658085,441,35)
{
}
Add(MathParse,6580332,336,105)
{
DataCount=1
MathStr="frac(%1*16)"
link(onResult,14320536:doWork3,[(375,111)(375,90)(256,90)])
link(X1,9693438:Var3,[(342,82)])
}
Add(For,10100884,217,98)
{
End=13
link(onEvent,3137247:doCalc,[])
link(onStop,521357:doData,[(256,111)(256,167)])
}
Add(Memory,8584112,266,42)
{
}
Add(MathParse,3137247,266,98)
{
DataCount=1
MathStr="trunc(%1*16)"
link(onResult,16380616:doEvent1,[])
link(X1,9693438:Var2,[])
}
Add(GetDataEx,9693438,266,77)
{
link(Data,8584112:Value,[])
}
Add(MathParse,12381851,63,77)
{
DataCount=1
MathStr="trunc(%1)"
link(onResult,8403393:doEvent1,[])
link(X1,14265648:Var2,[])
}
Add(Hub,8403393,112,77)
{
OutCount=3
link(onEvent1,2856699:doConvert,[(137,83)(137,41)])
link(onEvent2,11307791:doClear,[(137,90)(137,133)(426,133)(426,111)])
link(onEvent3,15476088:doCalc,[])
}
Add(Hub,388321,189,91)
{
link(onEvent1,14320536:doWork2,[(214,97)(214,48)])
link(onEvent2,10100884:doFor,[])
}
Add(MathParse,15476088,147,91)
{
MathStr="frac(%1)"
link(onResult,388321:doEvent1,[])
link(X1,14265648:Var3,[(153,68)])
}
Add(GetDataEx,14265648,63,63)
{
link(Data,15517314:Var3,[(69,47)])
}
Add(HubEx,14320536,252,42)
{
link(onEvent,8584112:doValue,[])
}
Add(Hub,16380616,308,98)
{
link(onEvent1,13494888:doConvert,[])
link(onEvent2,6580332:doCalc,[])
}
Add(Convertor,13494888,385,98)
{
Mode=6
Digits=1
link(onResult,11307791:doStrCat,[])
}
Add(StrCat,11307791,448,98)
{
Point(doClear)
link(Str1,15065326:Var3,[(454,89)(470,89)(470,139)])
}
Add(FormatStr,3650275,441,161)
{
Mask="%1.%2"
Point(FString)
link(onFString,15193150:onRes,[(487,167)(487,83)])
link(Str1,8658085:Value,[])
}
Add(GetDataEx,15065326,448,134)
{
link(Data,11307791:Result,[])
}
Add(HubEx,4872601,427,161)
{
link(onEvent,3650275:doString,[])
}
Add(HubEx,5792052,427,35)
{
link(onEvent,8658085:doValue,[])
}
Add(DoData,521357,385,161)
{
link(onEventData,4872601:doWork2,[])
link(Data,15065326:Var2,[(391,145)(454,145)])
}
Add(StrPart,8669169,259,224)
{
Char="."
link(onSplit,4872601:doWork3,[(431,230)])
link(Str,9347192:Result,[])
}
END_SDK

карма: 14

0
Ответов: 9820
Рейтинг: 340
#4: 2019-07-06 21:30:42 ЛС | профиль | цитата
Ну ни хрена себе
карма: 8

0
Ответов: 8364
Рейтинг: 776
#5: 2019-07-06 23:25:42 ЛС | профиль | цитата
Galkov,
карма: 14

0
Ответов: 1186
Рейтинг: 27
#6: 2019-07-08 11:16:31 ЛС | профиль | цитата
Леонид,

я имел ввиду число с запятой в hex, его ещё вроде называют Float, но вобщем всё более менее получилось с I64, только теперь есть вопрос как переделать код с 4 байт под 8

Hex2Int

function Hex2Int(st:string):integer;
var
i,ln:word;
begin
st := LowerCase(st);
Result := 0;
ln := Length(st);
if ln > 0 then
for i := 1 to ln do
case st[i] of
'0'..'9': Result := Result shl 4 + ord(st[i]) - 48;
'a'..'f': Result := Result shl 4 + ord(st[i]) - 87;
else break;
end;
end;

Редактировалось 3 раз(а), последний 2019-07-08 11:17:16
карма: 1

0
Ответов: 3970
Рейтинг: 625
#7: 2019-07-08 11:32:40 ЛС | профиль | цитата
function Hex2Int64(st: string): Int64;


Редактировалось 1 раз(а), последний 2019-07-08 11:32:47
карма: 19

0
Ответов: 8364
Рейтинг: 776
#8: 2019-07-08 12:19:12 ЛС | профиль | цитата
Rysik писал(а):
..я имел ввиду..

Имеете в виду то, о чём не можете внятно рассказать, означает полное не понимание сути вещи, в данном случае представления чисел и байтов в компьютере
карма: 14

0
Ответов: 9820
Рейтинг: 340
#9: 2019-07-08 16:28:21 ЛС | профиль | цитата
Если честно,Леонид, не понимаю, чего ты столь хитро извращался.... Какое отношение имеет точка к HEX... где знак... почему именно 13...
Влепил бы ему натюрморт из нескольких элементов:
Add(MainForm,1674194,294,35)
{
}
Add(Edit,3537562,385,70)
{
Left=75
Top=10
Width=195
Text="123.456789"
DataType=4
ClearAfterEnter=1
}
Add(Button,10396681,294,119)
{
Left=20
Top=20
Width=20
Height=45
Caption="V\r\nV"
link(onClick,4060685:doEvent1,[])
}
Add(Edit,9300325,714,133)
{
Left=75
Top=80
Width=195
Text=""
ClearAfterEnter=1
}
Add(Edit,11527724,553,133)
{
Left=75
Top=45
Width=195
Text=""
link(onChange,6344388:doConvert,[])
}
Add(Hub,4060685,350,119)
{
OutCount=3
link(onEvent1,1436240:doClear,[(375,125)(375,55)])
link(onEvent2,215512:doData,[])
link(onEvent3,1432339:doConvert,[])
}
Add(MemoryStream,1436240,441,42)
{
}
Add(DataToFileEx,12347472,441,119)
{
Type=1
DataSize=8
BigEndian=0
link(Stream,15978781:Var2,[])
}
Add(DoData,215512,385,126)
{
link(onEventData,12347472:doPut,[])
link(Data,3537562:Text,[])
}
Add(StreamConvertor,1432339,497,133)
{
link(onResult,11527724:doText,[])
link(Data,15978781:Var3,[(503,103)])
}
Add(GetDataEx,15978781,441,98)
{
link(Data,1436240:Stream,[])
}
Add(StreamConvertor,6344388,609,133)
{
Mode=1
link(onResult,63447:doGet,[])
}
Add(DataToFileEx,63447,665,133)
{
Type=1
DataSize=8
BigEndian=0
link(onGet,9300325:doText,[])
}

И нехай себе выбирает float/real/extended... Big/Little Endian...
Если поймет чего это такое в (смысле - чего он сам хочет-то).

Леонид, ты зачем столько кругов с бубном делал, вокруг ерунды-то

Редактировалось 3 раз(а), последний 2019-07-08 16:33:06
карма: 8

0
Ответов: 8364
Рейтинг: 776
#10: 2019-07-08 19:09:34 ЛС | профиль | цитата
Galkov, да как понял, так и нарисовал, ТС же не обозначил что ему нужно, если как в памяти, то и вопроса не должно быть, значит по другому, вот и изгалялся
карма: 14

0
Ответов: 1186
Рейтинг: 27
#11: 2019-07-08 20:02:42 ЛС | профиль | цитата
Да, часто меня никто не понимает)), так уж устроен)), плохо излагаю мысли), спасибо всем за ответы
карма: 1

0
Ответов: 9820
Рейтинг: 340
#12: 2019-07-09 16:27:28 ЛС | профиль | цитата
А мы опять не поняли: понял ли ты, что это не у нас плохо с пониманием, а у тебя плохо с изложением.
Или не понял -- нам ни фига не понятно

Редактировалось 1 раз(а), последний 2019-07-09 16:27:50
карма: 8

0
Ответов: 1186
Рейтинг: 27
#13: 2019-07-09 18:17:35 ЛС | профиль | цитата
Galkov писал(а):
у тебя плохо с изложением


всё верно, плохо)))
карма: 1

0
Ответов: 1186
Рейтинг: 27
#14: 2019-07-11 11:28:37 ЛС | профиль | цитата
Netspirit писал(а):
function Hex2Int64(st: string): Int64;



не хочет работать

HiAsmUnit.pas(24) Error: Unsatisfied forward or external declaration: 'Hex2Int64'

Редактировалось 2 раз(а), последний 2019-07-11 11:29:24
карма: 1

0
Ответов: 9820
Рейтинг: 340
#15: 2019-07-11 16:30:54 ЛС | профиль | цитата
Rysik писал(а):
не хочет работать

И не надо. Не твое это...
Это для тех, у кого есть (как минимум) стремление понимать написанное.
К копипастингу это не имеет никакого отношения.

Да, и это все не предмет обсуждения, это просто достоверная информация.



Ну и наконец, может быть Благородный Дон таки сообщит нам всем: ВЫ С КАКОЙ ЦЕЛЬЮ ЭТИМ ВСЕМ ИНТЕРЕСУЕТЕСЬ
а то канючит, канючит... неизвестно об чем.

Редактировалось 1 раз(а), последний 2019-07-11 16:32:48
карма: 8

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