Translate

martes, 6 de agosto de 2024

Matrices de bits en Gleam


 import gleam/io


pub fn main() {

  // 8 bit int. In binary: 00000011

  io.debug(<<3>>)

  io.debug(<<3>> == <<3:size(8)>>)


  // 16 bit int. In binary: 0001100000000011

  io.debug(<<6147:size(16)>>)


  // A bit array of UTF8 data

  io.debug(<<"Hello, Joe!":utf8>>)


  // Concatenation

  let first = <<4>>

  let second = <<2>>

  io.debug(<<first:bits, second:bits>>)

}


Las matrices de bits representan una secuencia de 1 y 0, y son una sintaxis conveniente para construir y manipular datos binarios.

A cada segmento de una matriz de bits se le pueden dar opciones para especificar la representación utilizada para ese segmento.

  • size: el tamaño del segmento en bits.
  • unit: la cantidad de bits de los cuales el valor de tamaño es un múltiplo.
  • bits: una matriz de bits anidada de cualquier tamaño.
  • bytes: una matriz de bits anidada alineada con bytes.
  • float: un número de punto flotante de 64 bits.
  • int: un int con un tamaño predeterminado de 8 bits.
  • big: big endian.
  • little: little endian.
  • native: el orden de bits del procesador.
  • utf8: texto codificado en utf8.
  • utf16: texto codificado en utf16.
  • utf32: texto codificado en utf32.
  • utf8_codepoint: un punto de código utf8.
  • utf16_codepoint: un punto de código utf16.
  • utf32_codepoint: un punto de código utf32.
  • signed: un número con signo.
  • unsigned: un número sin signo.

Se pueden dar múltiples opciones a un segmento separándolas con un guion: x:unsigned-little-size(2).

Las matrices de bits tienen un soporte limitado al compilar en JavaScript, no se pueden usar todas las opciones. En el futuro se implementará un soporte completo para matrices de bits.