Войти

Показать полную графическую версию : [решено] Работа с бинарным значением, как с строкой.


SyDr
29-05-2009, 20:12
Есть бинарное значение (к примеру 0x0A0000). Как заставить AutoIt не преобразовывать его автоматом в обычное число? Мне нужно работать с этим, как с обычной строкой.

Func GetLength($Data)
Local $Return = StringMid($Data, 7, 1)
$Return = 16 * $Return + StringMid($Data, 8, 1)
$Return = 16 * $Return + StringMid($Data, 5, 1)
$Return = 16 * $Return + StringMid($Data, 6, 1)
$Return = 16 * $Return + StringMid($Data, 3, 1)
$Return = 16 * $Return + StringMid($Data, 4, 1)
Return $Return
EndFunc

Эта функция возвращает 24659, хотя мне нужно 10

Creat0R
29-05-2009, 20:27
Мне нужно работать с этим, как с обычной строкой.

$nVar = 0x0A0000

GetLength($nVar)

Func GetLength($Data)
$Data = '0x' & Hex($Data, 6)
ConsoleWrite("IsString($Data): " & (IsString($Data) = 1) & @CRLF)

Local $Return = StringMid($Data, 7, 1)

$Return = 16 * $Return + StringMid($Data, 8, 1)
$Return = 16 * $Return + StringMid($Data, 5, 1)
$Return = 16 * $Return + StringMid($Data, 6, 1)
$Return = 16 * $Return + StringMid($Data, 3, 1)
$Return = 16 * $Return + StringMid($Data, 4, 1)

ConsoleWrite("$Return = " & $Return & @CRLF)

Return $Return
EndFunc

Я только не пойму как из этого должно получиться 10 :dont-know .

SyDr
29-05-2009, 21:00
Упс... Там где StringMid должно ещё и Dec стоять :)

Спасибо))

Creat0R
29-05-2009, 22:31
А для чего предназначено конвертирование подобного рода?

SyDr
30-05-2009, 07:30
Это перевод из 16-ричной системы счисления в 10 с использованием минимального числа сложений и умножений. При этом возведение в степень не используется. Просто у меня порядок цифр в числе другой. Сначала идёт младшие два разряда. Потом средние два. Потом старшие два.

Могу написать поподробнее про сам перевод. Только что-то я тут не вижу тега, чтобы писать индексы. Оффтоп, в принципе, подходит, но должно ведь быть что-то другое.




© OSzone.net 2001-2012