Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Работа с бинарным значением, как с строкой. (http://forum.oszone.net/showthread.php?t=141392)

SyDr 29-05-2009 20:12 1130527

Работа с бинарным значением, как с строкой.
 
Есть бинарное значение (к примеру 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 1130546

Цитата:

Мне нужно работать с этим, как с обычной строкой.
Код:

$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 1130576

Упс... Там где StringMid должно ещё и Dec стоять :)

Спасибо))

Creat0R 29-05-2009 22:31 1130643

А для чего предназначено конвертирование подобного рода?

SyDr 30-05-2009 07:30 1130751

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

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


Время: 17:35.

Время: 17:35.
© OSzone.net 2001-