AutoIt/Łańcuchy binarne
Co to jest łańcuch binarny?
edytujŁańcuch binarny to nazwa typu danych będących ciągiem wartości kolejnych bajtów. Jest on bardzo podobny do stringu, jednak w odróżnieniu od niego poszczególne elementy nie mają reprezentacji graficznej w postaci znaków.
Maksymalna wielkość łańcucha binarnego to 2147483647 bajtów.
Tworzenie łańcuchów binarnych
edytujŁańcuch binarny można utworzyć przez konwersję ze stringu, lub wyrażenia liczbowego.
Można także wczytać z dysku dowolny plik binarny, np.:
$bVer = FileRead("Test.bin")
Dokładny opis w rozdziale: AutoIt/Czytanie i pisanie do plików.
Funkcje operujące na łańcuchach binarnych
edytujBinary
edytujBinary ( wyrażenie )
Funkcja zamienia dowolne wyrażenie na łańcuch binarny.
BinaryLen
edytujBinaryLen ( binary )
Funkcja zwraca długość łańcucha binarnego (czyli ilość bajtów).
BinaryMid
edytujBinaryMid ( binary, start [, count] )
binary - łańcuch przetwarzany
start - od którego elementu ma być tworzony łańcuch wynikowy
Opcjonalnie:
count - ilość bajtów łańcucha wynikowego (domyślnie do końca stringu)
Funkcja zwraca łańcuch binarny złożony z count bajtów łańcucha argumentu poczynając od pozycji start.
Jeżeli nie użyjemy argumentu count to łańcuch będzie zwrócony do końca.
Jeżeli count jest większe od długości pozostałej części łańcucha argumentu, to będzie on zwrócony do końca.
Jeżeli count = 0 to zwrócony będzie łańcuch pusty, count < 0 jest ignorowane.
BinaryToString
edytujBinaryToString ( wyrażenie [, flaga] )
Funkcja zamienia łańcuch binarny na string. Jeżeli wystąpi błąd to funkcja zwraca pusty łańcuch, a makro @error przyjmuje wartość:
1 - gdy łańcuch wejściowy miał zerową długość
2 - łańcuch wejściowy miał nieparzystą liczbę bajtów, a miał być konwertowany jako UTF16 (UTF16 musi zawierać parzystą liczbę bajtów)
wyrażenie - wyrażenie zamieniane na string
flaga - (opcjonalnie) sposób kodowania znaków
1 - (domyślnie) ANSI
2 - UTF16 Little Endian
3 - UTF16 Big Endian
4 - UTF8
StringToBinary
edytujStringToBinary ( wyrażenie [, flaga] )
Funkcja zamienia string na łańcuch binarny.
wyrażenie - wyrażenie zamieniane na string
flaga - (opcjonalnie) sposób kodowania znaków
1 - (domyślnie) ANSI
2 - UTF16 Little Endian
3 - UTF16 Big Endian
4 - UTF8
Łączenie łańcuchów binarnych
edytujŁańcuch binarne możemy łączyć podobnie jak stringi za pomocą operatora &.
Przykład działania na łańcuchach binarnych
edytuj$bV1 = StringToBinary("A")
$bV2 = StringToBinary("B")
$bV3 = StringToBinary("C")
$bV = $bV1 & $bV2 & $bV3
MsgBox(0, "BinaryToString:", BinaryToString($bV))
$bV = Binary(0x414243)
MsgBox(0, "BinaryToString:", BinaryToString($bV))
MsgBox(0, "BinaryToString:", BinaryToString(BinaryMid($bV, 2, 1)))
MsgBox(0, "BinaryLen:", BinaryLen($bV))