Chunk

Chunks são apenas blocos binários de dados.

Declaração

Chunks não podem ser declarados explicitamente; você deve usar o construtor de tipo e aplicar uma das seguintes estratégias:

_ <- fat.type.Chunk

Chunk(null)            # Void -> [] (chunk vazio)
Chunk(4)               # Number -> [ 0, 0, 0, 0 ] (bytes em branco)
Chunk('ABC')           # Text -> [ 65, 66, 67 ]
Chunk([ 65, 66, 67 ])  # List/Number -> [ 65, 66, 67 ]

espera-se que lista de números contenha valores de byte válidos (0-255), caso contrário, um erro é gerado

Manipulando chunks

Concatenação

No FatScript, você pode concatenar, ou juntar, dois chunks usando o operador +. Por exemplo:

abCombinados = chunkA + chunkB

Seleção de blocos

A seleção permite acesso a partes específicas de um chunk usando índices. O FatScript suporta índices positivos e negativos. Índices positivos começam a partir do início do chunk (com 0 como o primeiro byte), enquanto índices negativos começam a partir do final (-1 é o último byte).

para uma explicação detalhada sobre o sistema de indexação no FatScript, consulte a seção sobre acesso e seleção de itens em Lista

Selecionar com um índice recupera um único byte do chunk (como número). Usando um intervalo de bytes, seleciona um fragment incluindo os índices de início e fim, exceto quando se usa o operador de intervalo semiaberto ..<, que é exclusivo no lado direito.

Acessar índices fora do intervalo válido gerará um erro para seleções individuais. Para seleções de intervalo, índices fora dos limites resultam em um chunk vazio.

x3 = Chunk('example')
x3(1)     # 120 (valor ASCII de 'x')
x3(..2)   # novo Chunk contendo 3 bytes (correspondendo a 'exa')

Manipulação direta

a partir da versão 3.3.0

Mutação em dados binários permite alterar bytes específicos por posição.

Por exemplo, em ~ chunk = Chunk([ 65, 66, 67 ]), você pode modificar o último byte com chunk[2] = 68, transformando o dado em [ 65, 66, 68 ].

Comparações

São suportadas comparações de igualdade == e desigualdade != de chunks.

Veja também

results matching ""

    No results matching ""