Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

#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.
    ¡Gracias!
#2

GAMBAS
  1. Print Val("%11111110")


[-] Los siguientes 1 usuarios dice gracias a cogier por este post:
  • tincho
    ¡Gracias!
#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
GAMBAS
  1. Library "libc:6"
  2.  
  3. ' long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base)
  4. ' Convert a string to a long integer.
  5. Private Extern strtol(__nptr As String, __endptr As Pointer, __base As Integer) As Long
  6.  
  7.  
  8. Public Sub Main()
  9.  
  10.   Dim binario As String
  11.  
  12.   binario = "11111110"
  13.  
  14.   Print strtol(binario, 0, 2)
  15.  



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • tincho
    ¡Gracias!
#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.

1 Saludo.
    ¡Gracias!
#5

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

GAMBAS
  1. Public Sub Main()
  2.  
  3.   Dim s As String  
  4.   Dim bb As Byte[]
  5.   Dim b As Byte
  6.   Dim l As Long   ' u otro tipo de dato nativo
  7.  
  8.   s = "11111110"
  9.  
  10.   bb = Byte[].FromString(s).Reverse()
  11.  
  12.   For b = 0 To bb.Max
  13.     l += CLong((bb - 48) * (2 ^ b))
  14.   Next
  15.  
  16.   Print l
  17.  



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • tincho
    ¡Gracias!
#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
[-] Los siguientes 1 usuarios dice gracias a tercoide por este post:
  • tincho
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)