tincho   12-08-2022, 15:55
#1
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 ?

1 Saludo.
cogier   12-08-2022, 17:18
#2
[code]
vuott   12-08-2022, 21:44
#3
Hooola tinchooo !
Olivier te dio la solución más rápida:
https://lists.gambas-basic.org/pipermail...76707.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
Última modificación: 12-08-2022, 21:44 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   13-08-2022, 17:08
#4
(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.
Última modificación: 13-08-2022, 17:26 por tincho.

1 Saludo.
vuott   13-08-2022, 18:30
#5
...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
Última modificación: 13-08-2022, 18:33 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tercoide   16-08-2022, 15:17
#6
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

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.