Что нового

Перекодировка типа данных

xamd

AION bot developer
Сообщения
66
Репутация
24
Нужно из hex перевести значение во float.
Как?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
Таки зная алгоритмы конвертации можно написать свою UDFку я думаю
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
А нет просто стандартной функции, о которой я не знаю? :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
Вроде нет, таки вроде я такие в глаза не видывал, разве что не включенная в стандартную библиотеку UDF созданная фанатами и что-то я сомневаюсь что любой HEX конвертируется в лонг, в лонге если мне память не изменяет как и цифры так же и текст хранится закодированный:smile: :smile:
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
Я из памяти вытаскиваю некоторое значение, которое является само по себе float данным. Я могу посмотреть его либо как integer, либо как hex (
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
ну дак в чем проблема тогда? о_О
Смотри в интегер и будет тебе счастье, тебе же не надо писать это значение обратно в 4-х байтный float
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
проблема в том, что у меня цифр 16 в этом integer, а надо цифры 3-4 + 1 значение после точки )
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
xamd
в integer нет значения после точки.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 714
Код:
$iInt = 1082392576

$tInt = DllStructCreate('uint')
$tFloat = DllStructCreate('float', DllStructGetPtr($tInt))
DllStructSetData($tInt, 1, $iInt)

ConsoleWrite(DllStructGetData($tFloat, 1) & @CR)
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
Я просто объяснял зачем мне нужен float. Я знаю, что в integer целый тип )

Может быть тема не имеет смысла, ибо скорее всего у меня неверные стартовые параметры
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 610
Репутация
2 438
Код:
$Var_Origin 				= "0xFFFFFF"
$Var_Float 					= StringFormat("%.0f", $Var_Origin)
$Var_HexDec 				= StringFormat("0x%X", $Var_Float)

ConsoleWrite("$Var_Origin	= " & $Var_Origin & @LF)
ConsoleWrite("$Var_Float	= " & $Var_Float & @LF)
ConsoleWrite("$Var_HexDec	= " & $Var_HexDec & @LF)



Добавлено:
Сообщение автоматически объединено:

Yashied
Кстати, можно с этого функцию сделать:

Код:
$iFloat = _DataTypeConvert(12345, "int", "float")
ConsoleWrite($iFloat & @LF)

$iInt = _DataTypeConvert($iFloat, "float", "int")
ConsoleWrite($iInt & @LF)

Func _DataTypeConvert($sData, $sFromType, $sToType)
	$tFromStruct = DllStructCreate($sFromType)
	$tToStruct = DllStructCreate($sToType, DllStructGetPtr($tFromStruct))
	DllStructSetData($tFromStruct, 1, $sData)
	
	Return DllStructGetData($tToStruct, 1)
EndFunc
 

amel27

Продвинутый
Сообщения
146
Репутация
55
xamd сказал(а):
Я просто объяснял зачем мне нужен float. Я знаю, что в integer целый тип )
тогда просто создай структуру по нужному адресу и прочитай данные:

Код:
$tFloat = DllStructCreate('float', $iMemoryAddress)
$iFloat = DllStructGetData($tFloat, 1)


xamd сказал(а):
Может быть тема не имеет смысла, ибо скорее всего у меня неверные стартовые параметры
Float тоже бывает разный: http://ru.wikipedia.org/wiki/IEEE_754-2008
 
Верх