Что нового

Прочитать число из бинарного файла

Tuner

Новичок
Сообщения
15
Репутация
0
Нужно прочитать с определенного смещения int число из бинарного файла.
На питоне данная задачка решается просто:
Код:
with open(filename, 'rb') as rb:
    rb.seek(216)
    num  = struct.unpack('i', rb.read(4))
    print('num = ', num)

Результат: num = 610234

А как такое реализовать на Autoit?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
#Include <WinAPIEx.au3>

Local $hFile, $iBytes, $tBuf, _
	$iOffset = 0xDEAD
; ---
$hFile = _WinAPI_CreateFile ( ... )
If $hFile Then
	_WinAPI_SetFilePointer($hFile, $iOffset)

	$tBuf = DllStructCreate('int i')
	_WinAPI_ReadFile( _
		$hFile, _
		DllStructGetPtr($tBuf), _
		DllStructGetSize($tBuf), _ ;0x04
		$iBytes _
	)
	;*
	ConsoleWrite( "Result=" & $tBuf.i & @CRLF)

	_WinAPI_CloseHandle($hFile)
EndIf
 
Автор
Tuner

Tuner

Новичок
Сообщения
15
Репутация
0
firex, благодарю!
Неожиданно сложный код, но он работает правильно.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Tuner [?]
Неожиданно сложный код
Нативными функциями:
Код:
$hFile = FileOpen(@ScriptDir & '\test.prx', 16)
FileSetPos($hFile, 0x07D2, 0);2002
ConsoleWrite(Int(FileRead($hFile, 4), 1) & @LF)
FileClose($hFile)
 
Верх