Binary! datatype

1. Úvodem

Hodnota binary! je tvořena řadou číselných znaků zvolené číselné soustavy - nikoliv jak název napovídá - pouze dvojkové soustavy.

Typ binary! je člen typesetů default! a series!

2. Vytvoření

Hodnoty typu binary lze vytvořit s použitím literálové syntaxe nebo při runtime s použitím konstruktoru make nebo konverzí to.

3. Literálová skladba

<binary-literal> ::=  2#{<base2-char>*} |
                     16#{<hex-char>*} OR #{<hex-char>*} |
                     64#{<base64-char>*}

Hodnota base2 se skládá z jedné či více skupin osmi číslic 0-1. Skupiny lze oddělovat mezerou

>> 2#{11111111}
== #{FF}

>> 2#{11110000 00001111}
== #{F00F}

Hodnota base16 je hexadecimální formát čísla a skládá se z jedné či více skupin dvou znaků 0-9 A-F a-f

>> 16#{2A}
== #{2A}

>> 16#{2A FF}
== #{2AFF}

Tento formát je implicitní a lze jej psát i bez označení báze.

>> #{2A}
== #{2A}

Lichý počet znaků vyvolá chybu.

>> 16#{2AF}
*** Syntax Error: invalid binary! at "#{2AF}"
*** Where: do
*** Stack: load

Hodnota base64 se musí skládat ze čtyř znaků nebo ze skupin čtyř znaků z množiny 0-9 A-Z a-z +/.

>> 64#{2AQQ}
== #{D80410}

>> 64#{2A+/}
== #{D80FBF}

Méně než čtyři znaky nebo lichý počet znaků vyvolá chybu. Potřebnou délku lze vytvořit doplněním (maximálně) dvěma rovnítky =.

>> 64#{2A}
*** Syntax Error: invalid binary! at "64#{2A}"
*** Where: do
*** Stack: load

>> 64#{2A2=}
== #{D80D}

>> 64#{D75q31==}
== #{0FBE6ADF}

4. Deklarace pro runtime

Použití make:

>> make binary! [42]
== #{2A}

Konverze to:

>> to binary! 42
== #{0000002A}

>> to binary! [42]
== #{2A}

5. Související funkce

5.1. enbase

>> help enbase

USAGE:
     ENBASE value

DESCRIPTION:
     Encodes a string into a binary-coded string (BASE-64 default).
     ENBASE is a native! value.

ARGUMENTS:
     value        [binary! string!] "If string, will be UTF8 encoded."

REFINEMENTS:
     /base        => Binary base to use.
        base-value   [integer!] "The base to convert from: 64, 58, 16, or 2."

Příklad

>> enbase #{0FBE6ADF}
== "D75q3w=="              ; báze 64 je pro funkci enbase implicitní

>> enbase/base #{0FBE6ADF} 2
== "00001111101111100110101011011111"

>> enbase "I"
== "SQ=="

5.2. debase

>> help debase

USAGE:
     DEBASE value

DESCRIPTION:
     Decodes binary-coded string (BASE-64 default) to binary value.
     DEBASE is a native! value.

ARGUMENTS:
     value        [string!] "The string to decode."

REFINEMENTS:
     /base        => Binary base to use.
        base-value   [integer!] "The base to convert from: 64, 58, 16, or 2."

Příklad převodů tam a zpět:

>> enbase "I"
== "SQ=="

>> enbase/base "I" 64
== "SQ=="

>> debase "SQ=="
== #{49}

>> to string! debase "SQ=="
== "I"

Případně:

>> to-binary "I"
== #{49}

>> to string! #{49}
== "I"

6. Komparace

Na hodnotu typu binary! lze aplikovat všechny komparační operátory: =, ==, <>, >, <, >=, <=, =?. Navíc jsou podporovány funkce min a max.

7. Ověřování hodnot

Přímým dotazem:

>> binary? #{2A}
== true

Obecným dotazem:

>> type? #{2A}
== binary!

8. Předdefinovaná slova

8.1. Akce

complement, or~, put, read, trim, write, xor~

8.2. Funkce

binary?, load, read-thru, save, to-binary

8.3. Nativa

call, checksum, debase, decompress, enbase, parse

8.4. Operátory

and, or, xor

results matching ""

    No results matching ""