Pular para o conteúdo

Os tipos de um campo

Inteiros com e sem sinal, ponto flutuante, booleano, texto e bytes de tamanho fixo — e a faixa que cada um aceita.

Um campo binário não tem "um número": tem um número de N bits, com ou sem sinal. Escolher o tipo é escolher a faixa — e um valor fora dela, num formato binário, não dá erro sozinho: ele é truncado, e o arquivo sai com outro número. Arcane.Estrutura confere a faixa na escrita.

TipoBytesFaixaUso típico
u8 / i810 a 255 / −128 a 127byte cru, flag, contador pequeno
u16 / i1620 a 65.535 / ±32.767porta de rede, amostra de áudio
u32 / i3240 a 4,29 bi / ±2,1 bitamanho de arquivo, id, cor RGBA
u64 / i6480 a 1,8×10¹⁹timestamp em ns, deslocamento em arquivo grande
f32 / f644 / 8~7 / ~15 dígitosmedida física, coordenada
bool1yes / noflag isolada
char NNtexto de até N bytes em UTF-8nome fixo, código de 4 letras
bytes NNN bytes crusassinatura mágica, hash, chave
dataforge
adopt Arcane.Estrutura as Est

Leitura := Est.definir("Leitura", [
    ["sensor", "u16"], ["temperatura", "f32"], ["ok", "bool"], ["rotulo", "char", 6]])

b := Leitura({"sensor": 7, "temperatura": 21.5, "ok": yes, "rotulo": "sala"})
assert Leitura.ler(b) is {"sensor": 7, "temperatura": 21.5, "ok": yes, "rotulo": "sala"}
assert Est.tamanho_de("u16") is 2 and Est.tamanho_de("f64") is 8

estourou := no
monitor:
    Leitura({"sensor": 70000})             // u16 vai até 65535
handle BufferOverflowError as e:
    estourou := yes
    out e.message
assert estourou