https://foro.gambas-es.org/viewtopic.php?f=5&t=8039
-----------------------------------
tincho
Lunes, 11 May 2020, 18:06

Convertir Hexadecimal En Decimal
-----------------------------------
Hola a todos.
Luego de buscar un largo rato en el foro y en la ayuda de gambas no logre encontrar la forma de Convertir Hexadecimal en Decimal.
Tengo los siguientes números por ejemplo:
0x0
0x100
0x2000
0x2008

Nota: dichos valores provienen de una librería que decodifica archivos binarios y según el manual de dicha librería el valor debería ser "short 1 bit-encoded unsigned short"

¿Alguna idea?


-----------------------------------
vuott
Lunes, 11 May 2020, 18:33

Re: Convertir Hexadecimal En Decimal
-----------------------------------
[quote user="tincho" post="48439"]... en la ayuda de gambas no logre encontrar la forma de Convertir Hexadecimal en Decimal.
Tengo los siguientes números por ejemplo:
0x0
0x100
0x2000
0x2008[/quote]
Parto de la premisa de que debes convertir a decimal aquellos números como los escribiste en la representación hexadecimal usada por el C.
Si tienes que convertir aquella representación, significa que está expresa en tipo [i]String[/i].
Tienes que eliminar el simbolo "x" y luego convertir de manera gambasiana.
Es decir:
[code linenumbers=false syntax=gambas]Public Sub Main()

  Dim s As String = "0x100"
  Dim c As Short
  
  s = Replace(s, "x", "0")
  
  c = Val("&" & s)

''...o si prefieres:
  ' s = Replace(s, "0x", "&")
  ' c = Val(s)
  
  Print c

End[/code]





[quote user="tincho" post="48439"]unsigned short"[/quote]
...como sabes Gambas no tiene el typo [i]Unsigned Short[/i].   :|


-----------------------------------
tincho
Lunes, 11 May 2020, 18:39

Re: Convertir Hexadecimal En Decimal
-----------------------------------
[quote user="vuott" post="48440"][quote user="tincho" post="48439"]... en la ayuda de gambas no logre encontrar la forma de Convertir Hexadecimal en Decimal.
Tengo los siguientes números por ejemplo:
0x0
0x100
0x2000
0x2008[/quote]
Parto de la premisa de que debes convertir a decimal aquellos números como los escribiste en la representación hexadecimal usada por el C.
Si tienes que convertir aquella representación, significa que está expresa en tipo [i]String[/i].
Tienes que eliminar el simbolo "x" y luego convertir de manera gambasiana.
Es decir:
[code linenumbers=false syntax=gambas]Public Sub Main()
  Dim s As String = "0x100"
  Dim c As Short
  s = Replace(s, "x", "0")
  c = Val("&" & s)
  Print c
End[/code]
[quote user="tincho" post="48439"]unsigned short"[/quote]
...como sabes Gambas no tiene el typo [i]Unsigned Short[/i].   :|[/quote]
Gracias Vuott. Siempre estas al pie del cañón.


-----------------------------------
vuott
Lunes, 11 May 2020, 18:48

Re: Convertir Hexadecimal En Decimal
-----------------------------------
Mira que he integrado mi código !


-----------------------------------
tincho
Lunes, 11 May 2020, 21:06

Re: Convertir Hexadecimal En Decimal
-----------------------------------
Vuott, perfecto si, he visto (y usado) tu código (el de este post y muchos que pones en el foro tambien).
Quedo así:
[code linenumbers=false syntax=gambas]              sVal = Replace(sVal, "0x", "&00")
              i = Val(sVal)[/code]
Gracias otra vez.
Saludos.


-----------------------------------
vuott
Lunes, 11 May 2020, 21:50

Re: Convertir Hexadecimal En Decimal
-----------------------------------
[quote user="tincho" post="48444"]Quedo así:
[code linenumbers=false syntax=gambas]              sVal = Replace(sVal, "0x", "&00")
              i = Val(sVal)[/code][/quote]
ok


