Comunidad Gambas-es
Bits - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Bits (/thread-990.html)



Bits - tincho - 12-08-2022

Hola.
Como saben para convertir en bits un numero byte se hace así:
Bin(254)
El resultado es:
11111110

Pero.. ¿Como se hace para obtener el 254 a partir del 11111110 ?


RE: Bits - cogier - 12-08-2022

[code]


RE: Bits - vuott - 12-08-2022

Hooola tinchooo !
Olivier te dio la solución más rápida:
https://lists.gambas-basic.org/pipermail/user/2022-August/076707.html

Pero yo por curiosidad te propongo una solución más simpatica: Rolleyes Big Grin
Código:
Library "libc:6"

' long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base)
' Convert a string to a long integer.
Private Extern strtol(__nptr As String, __endptr As Pointer, __base As Integer) As Long


Public Sub Main()

  Dim binario As String

  binario = "11111110"

  Print strtol(binario, 0, 2)

End



RE: Bits - tincho - 13-08-2022

(12-08-2022, 17:18)cogier escribió: Print Val("%11111110")

Gracias Charlie.

(12-08-2022, 21:44)vuott escribió: Pero yo por curiosidad te propongo una solución más simpatica:

C a través de Extern suele ser siempre mas veloz, en el uso que le voy a dar ahora solo ocurrirá la conversión al inicio de sesión pero tal vez si uso este método en otras tablas y una gran cantidad de veces seguramente la opción con C sea la optima.
Gracias Vuott.


RE: Bits - vuott - 13-08-2022

...y, si te gusta, puedes tambien usar un array de tipo Byte:

Código:
Public Sub Main()

  Dim s As String  
  Dim bb As Byte[]
  Dim b As Byte
  Dim l As Long   ' u otro tipo de dato nativo

  s = "11111110"

  bb = Byte[].FromString(s).Reverse()

  For b = 0 To bb.Max
    l += CLong((bb - 48) * (2 ^ b))
  Next

  Print l

End



RE: Bits - tercoide - 16-08-2022

en realidad puede usarse, en las operaciones matemáticas, cualquier formato, por ejemplo prueben sumar un binario, un decimal y un hex en la consola:
%11111110 + 1 + &H1 

el resultado sera :

256