首页 > 解决方案 > Java for android 中的十六进制字符串到 Base64 字符串

问题描述

我正在努力在 java 中将十六进制字符串转换为 base64 字符串。我已经尝试过这个答案,但Hex.decodeHex显示错误。

    byte[] decodedHex;
    byte[] encodedHexB64;

    try {
      decodedHex = Hex.decodeHex("1234567890123458");
      encodedHexB64 = Base64.encodeBase64(decodedHex);
      System.out.println("FINAL ENCODED STRING -> "+encodedHexB64.toString());
     .
     ..}

抛出以下错误

E/AndroidRuntime: FATAL EXCEPTION: main

java.lang.NoSuchMethodError: No static method decodeHex(Ljava/lang/String;)[B in class Lorg/apache/commons/codec/binary/Hex; or its super classes (declaration of 'org.apache.commons.codec.binary.Hex' appears in /system/framework/org.apache.http.legacy.boot.jar)

我还尝试将其转换为字节数组,然后转换为 base64 字符串,但这对我也不起作用。

byte[] decodedHex;
byte[] encodedHexB64;
try {
  decodedHex = hexStringToByteArray(finalString); // finalString = 1234567890123458
  encodedHexB64 = Base64.encodeBase64(decodedHex);
  System.out.println("FINAL ENCODED STRING -> "+encodedHexB64.toString()); 
  .
  ..}

  // Desired output = EjRWeJASNFg= 
  // But actual output is FINAL ENCODED STRING -> [B@173943

在此处检查相同的输入会给出所需的输出

我也尝试过使用 Rhino 来使用 javascript 环境从 javascript 函数中获取这个值,但这对我也不起作用。在java中必须有某种方法来获得这个。您的帮助将不胜感激。

标签: javaandroidbase64hex

解决方案


推荐阅读