Encode Base16
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Amigos del foro:
En bolivia se esta empezando a implementar un nuevo de sistema de facturacion (como en otros paises).
Uno de los pasos para el envio de la informacion es la codificacion de un numero a Base16.
Por lo que entiendo codificar a Base16 es pasar un numero a hexadecimal
El problema es que el numero es demasiado largo (52 digitos)
Ejemplo:
Este numero (resultado de la conctenacion de otros numeros) debo codificarlo a Base16
-> 0001234567890201811151310009990000101010000000100005
El resultado debe ser (segun el ejemplo que ponen):
-> D83FF05798D81FFC7426DE08E0C6F3C79884A6A5
Utilizando la funcion de xharbour: NumToHex( <nNum>|<pPointer>, [<nLen>]) el programa se cierra sin dar nungun mensaje
? NumToHex(0001234567890201811151310009990000101010000000100005)
Del internet descargue esta funcion:
pero solo sirve para numeros pequeños
Alguien sabe como hacer el Encode Base16
De antemano, muchas gracias por la ayuda
Rolando
Cochabamba, Bolivia
En bolivia se esta empezando a implementar un nuevo de sistema de facturacion (como en otros paises).
Uno de los pasos para el envio de la informacion es la codificacion de un numero a Base16.
Por lo que entiendo codificar a Base16 es pasar un numero a hexadecimal
El problema es que el numero es demasiado largo (52 digitos)
Ejemplo:
Este numero (resultado de la conctenacion de otros numeros) debo codificarlo a Base16
-> 0001234567890201811151310009990000101010000000100005
El resultado debe ser (segun el ejemplo que ponen):
-> D83FF05798D81FFC7426DE08E0C6F3C79884A6A5
Utilizando la funcion de xharbour: NumToHex( <nNum>|<pPointer>, [<nLen>]) el programa se cierra sin dar nungun mensaje
? NumToHex(0001234567890201811151310009990000101010000000100005)
Del internet descargue esta funcion:
- Code: Select all Expand view
- //----------------------------------------------------------------------------//
// Retorna a String da Base dada (2 a 36) correspondente
// ao número decimal dado
//----------------------------------------------------------------------------//
function DecToBase(Base, Dado)
Local Valor, NumDig, Digs, Div, IDiv, Saida, i
Valor := Dado
Digs := "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
NumDig := 0
while (Valor >= 1)
Valor := Valor / Base
NumDig := NumDig + 1
end
Valor := Dado
Saida := ""
if NumDig = 0 //then
NumDig := 1
endif
for i := NumDig - 1 to 0 step -1
Div := Base ^ i
IDiv := Int(Valor / Div)
Saida := Saida + Substr(Digs, IDiv + 1, 1)
Valor := Valor - Div * IDiv
next
//DecToBase = Saida
Return Saida
pero solo sirve para numeros pequeños
Alguien sabe como hacer el Encode Base16
De antemano, muchas gracias por la ayuda
Rolando
Cochabamba, Bolivia