Что нового

Помощь по переводу маленького кода С# на язык AutoIt

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Вот так нагляднее вроде:
Код:
ConsoleWrite(StringRegExpReplace(HexToString('0x04bb0630f6f6b9f13eeb4cc976b86b'), '(^.{4}|.{5}(?=.))', '\1-') & @CRLF)

Func HexToString($bData)
	Local $ret = ''
	For $i = 5 To 15 Step 5
		Local $bits = 0, $pos = $i, $str = '', $num = 0
		For $j = 1 To 8
			If $bits < 5 Then
				$num = BitOR(BitShift(BinaryMid($bData, $pos, 1), -$bits), $num)
				$pos -= 1
				$bits += 8
			EndIf
			$str &= StringMid("0123456789ABCDEFGHJKLMNPRSTVWXYZ", BitAND($num, 31) + 1, 1)
			$num = BitShift($num, 5)
			$bits -= 5
		Next
		$ret &= $str
	Next
	Return $ret
EndFunc   ;==>HexToString
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Z_Lenar,
Снимаю шляпу!
OffTopic:
Начал уже писать функции перевода чисел в двоичную систему и для нее BitShift, BitAND, BitOR. :smile:
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
OffTopic:
madmasles
Неплохо было бы для AutoIt написать библиотеку для работы с большими (без фиксированного количества байтов под размер) числами. Для C(++) вроде таких наработок навалом.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Неплохо было бы для AutoIt написать библиотеку для работы с большими (без фиксированного количества байтов под размер) числами.

imho, AutoIt не предназначен для таких задач. Эффективнее создать dll-ку на том же C, а потом просто вызывать её из AutoIt.

К тому же попытки что-то такое сделать на AutoIt уже были, и, на мой взгляд, результат выглядел печально.
(если мы оба под "работой с большими числами" понимаем арифметические операции)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Z_Lenar [?]
Неплохо было бы для AutoIt написать библиотеку для работы с большими (без фиксированного количества байтов под размер) числами.
В русской справке есть BigNum.au3
 
Верх