Nur 10 Zeichen lang - sowas würde ich gerne für meine Scripte verwenden.
Das kannst du mit _WinAPI_ComputeCrc32 machen...
AutoIt
;-- TIME_STAMP 2020-09-11 08:49:58 v 0.1
#include <WinAPISys.au3> ; _WinAPI_ComputeCrc32
Global Enum $eString, $eFile
Global $iCrc32 = _GetCrc32(@ScriptFullPath, $eFile)
If @error Then Exit @error
ConsoleWrite('> $iCrc32 = ' & $iCrc32 & @CRLF)
ConsoleWrite('> Hex($iCrc32) = ' & Hex($iCrc32) & @CRLF)
For $i = 8 To 16 Step 1
ConsoleWrite(StringFormat(($i < 11 ? '+' : '-') & ' Hex($iCrc32, %2i) = %s\n', $i, Hex($iCrc32, $i)))
Next
Func _GetCrc32($sString, $iType = $eString)
If $sString = '' Then Return SetError(1, 0, '')
If $iType = $eFile Then $sString = FileRead($sString)
If @error Then Return SetError(2, 0, '')
Local $iLength = StringLen($sString), $tCrc32 = DllStructCreate('char Crc32[' & $iLength & ']')
If @error Then Return SetError(3, 0, '')
DllStructSetData($tCrc32, 'Crc32', $sString)
Local $pMemory = DllStructGetPtr($tCrc32)
Local $iCrc32 = _WinAPI_ComputeCrc32($pMemory, $iLength)
Return $iCrc32 ? $iCrc32 : SetError(4, 0, '')
EndFunc ;==>_GetCrc32
Alles anzeigen
Code: Ausgabe
> $iCrc32 = 3363262718
> Hex($iCrc32) = 00000000C87750FE
+ Hex($iCrc32, 8) = C87750FE
+ Hex($iCrc32, 9) = 0C87750FE
+ Hex($iCrc32, 10) = 00C87750FE
- Hex($iCrc32, 11) = 000C87750FE
- Hex($iCrc32, 12) = 0000C87750FE
- Hex($iCrc32, 13) = 00000C87750FE
- Hex($iCrc32, 14) = 000000C87750FE
- Hex($iCrc32, 15) = 0000000C87750FE
- Hex($iCrc32, 16) = 00000000C87750FE
Alles anzeigen