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?
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)
De cualquier manera, deberías obtener la cadena Base64 correcta como se esperaba.