es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El valor hexadecimal a Base64 no está en el formato correcto en VB.net.

Estoy intentando convertir una cadena a hexadecimal y luego a Base64, está funcionando pero el valor de base64 no es el mismo en Vs 2008(.net 3.5) y Vs 2019 (.net 4.6)

Este es mi código
–Cadena HEX
Dim QrCodeHex as string ="010c426f6273205265636f726473020f3331303132323339333530303030330314323032322d30342d32355431353a33303a30305a0407313030302e303005063135302e3030"
dim QrCodeBase64En as string = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(QrCodeHex))

Estoy obteniendo este resultado, el cual es incorrecto

MDEwYzQyNmY2MjczMjA1MjY1NjM2ZjcyNjQ3MzAyMGYzMzMxMzAzMTMyMzIzMzM5MzMzNTMwMzAzMDMwMzMwMzE0MzIzMDMyMzIyZDMwMzQyZDMyMzU1NDMxMzUzYTMzMzAzYTMwMzA1YTA0MDczMTMwMzAzMDJlMzAzMDA1MDYzMTM1MzAyZTMwMzA=

El resultado correcto es

AQxCb2JzIFJlY29yZHMCDzMxMDEyMjM5MzUwMDAwMwMUMjAyMi0wNC0yNVQxNTozMDowMFoEBzEwMDAuMDAFBjE1MC4wMA==

¿Cómo lo puedo obtener?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la cadena de entrada QrCodeHex ya está en formato hexadecimal, así que no es necesario convertirla de nuevo. Puedes convertir directamente la cadena hexadecimal a un arreglo de bytes y luego convertir el arreglo de bytes a Base64 utilizando el siguiente código:

    “`vb.net
    Dim hexBytes As Byte() = Enumerable.Range(0, QrCodeHex.Length).Where(Function(x) x Mod 2 = 0).[Select](Function(x) Convert.ToByte(QrCodeHex.Substring(x, 2), 16)).ToArray()
    Dim base64String As String = Convert.ToBase64String(hexBytes)

    Este código convertirá la cadena hexadecimal QrCodeHex en un arreglo de bytes y luego en la cadena Base64 correcta.
    
    Alternativamente, si deseas mantener tu código original, puedes intentar convertir la cadena hexadecimal a un arreglo de bytes utilizando el siguiente código y luego pasarlo al método ToBase64String:
    
    ```vb.net
    Dim hexBytes As Byte() = Enumerable.Range(0, QrCodeHex.Length).Where(Function(x) x Mod 2 = 0).[Select](Function(x) Convert.ToByte(QrCodeHex.Substring(x, 2), 16)).ToArray()
    Dim base64String As String = Convert.ToBase64String(hexBytes)
    

    De cualquier manera, deberías obtener la cadena Base64 correcta como se esperaba.

Comments are closed.