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

edytuj

Binary

edytuj
Binary ( wyrażenie )

Funkcja zamienia dowolne wyrażenie na łańcuch binarny.


BinaryLen

edytuj
BinaryLen ( binary )

Funkcja zwraca długość łańcucha binarnego (czyli ilość bajtów).


BinaryMid

edytuj
BinaryMid ( 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

edytuj
BinaryToString ( 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

edytuj
StringToBinary ( 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))