Java 将十六进制转换为原始字符串值

Java 将十六进制转换为原始字符串值,java,android,ethereum,Java,Android,Ethereum,在一个调用以太坊契约方法的android应用程序中,我有一个函数,它在return()中返回一个十六进制值,在这种情况下,字符串是yoooo,十六进制是: 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009796f6f6f6f6f6f6f6f00000000000000000000000

在一个调用以太坊契约方法的android应用程序中,我有一个函数,它在return()中返回一个十六进制值,在这种情况下,字符串是
yoooo
,十六进制是:

 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009796f6f6f6f6f6f6f6f0000000000000000000000000000000000000000000000

契约API向十六进制添加填充,如链接中所述。如何在没有填充的情况下从上面的十六进制值中获取原始值

请试试这个

String hex = "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009796f6f6f6f6f6f6f6f0000000000000000000000000000000000000000000000";
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2) {
    String str = hex.substring(i, i+2);
    output.append((char)Integer.parseInt(str, 16));
}
System.out.println(output.toString().trim());
String hex=“00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009796F6F6F6F6F6F0000000000000000000000000000”;
StringBuilder输出=新的StringBuilder();
对于(int i=0;i
请试试这个

String hex = "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009796f6f6f6f6f6f6f6f0000000000000000000000000000000000000000000000";
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2) {
    String str = hex.substring(i, i+2);
    output.append((char)Integer.parseInt(str, 16));
}
System.out.println(output.toString().trim());
String hex=“00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009796F6F6F6F6F6F0000000000000000000000000000”;
StringBuilder输出=新的StringBuilder();
对于(int i=0;i
试试这个

public static String convertHexToStringValue(String hex) {
    StringBuilder stringbuilder = new StringBuilder();
    char[] hexData = hex.toCharArray();
    for (int count = 0; count < hexData.length - 1; count += 2) {
        int firstDigit = Character.digit(hexData[count], 16);
        int lastDigit = Character.digit(hexData[count + 1], 16);
        int decimal = firstDigit * 16 + lastDigit;
        stringbuilder.append((char)decimal);
    }
    return stringbuilder.toString();
}
公共静态字符串转换器hextostringvalue(字符串十六进制){
StringBuilder StringBuilder=新的StringBuilder();
char[]hexData=hex.toCharArray();
对于(int count=0;count
试试这个

public static String convertHexToStringValue(String hex) {
    StringBuilder stringbuilder = new StringBuilder();
    char[] hexData = hex.toCharArray();
    for (int count = 0; count < hexData.length - 1; count += 2) {
        int firstDigit = Character.digit(hexData[count], 16);
        int lastDigit = Character.digit(hexData[count + 1], 16);
        int decimal = firstDigit * 16 + lastDigit;
        stringbuilder.append((char)decimal);
    }
    return stringbuilder.toString();
}
公共静态字符串转换器hextostringvalue(字符串十六进制){
StringBuilder StringBuilder=新的StringBuilder();
char[]hexData=hex.toCharArray();
对于(int count=0;count
(我认为)有多种可能的方法来实现这一点。我将在这里列出一种处理此类问题的直观方法

您可以从
字符串(十六进制)
字节数组
再到
字符串作为UTF-8(?)
。确保您的十六进制字符串没有前导空格和其他内容

给出:

?Yoooooo

(我认为)有多种可能的方法来实现这一点。我将在这里列出一种处理此类问题的直观方法

您可以从
字符串(十六进制)
字节数组
再到
字符串作为UTF-8(?)
。确保您的十六进制字符串没有前导空格和其他内容

给出:



?Yoooooo

是表示为
字符串
大整数
?@DebosmitRay添加了响应数据对象的屏幕截图<代码>字符串
似乎是这样。@3kings我不知道OP是否查到了。但是,使用标准的libs(番石榴汁)这篇文章真的没有什么好处。@johnyonan-Hey。我正在尝试为以太坊开发一个钱包应用程序,用于我在大学的学习。你能告诉我,你是怎么做到的吗?我找不到android的轻客户端。请给出任何说明。十六进制表示为
字符串
还是
大整数
?@DebosmitRay添加了响应数据对象的屏幕截图<代码>字符串
似乎是这样。@3kings我不知道OP是否查到了。但是,使用标准的libs(番石榴汁)这篇文章真的没有什么好处。@johnyonan-Hey。我正在尝试为以太坊开发一个钱包应用程序,用于我在大学的学习。你能告诉我,你是怎么做到的吗?我找不到android的轻客户端。任何方向请。尝试一下,它给出
�������������������������������������������������������������� ��������������������������������������������������������������哟哟哟����������������������������������������������。可能只得到字符串?请查看答案,它给出
�������������������������������������������������������������� ��������������������������������������������������������������哟哟哟����������������������������������������������。可能只获取字符串?请查看答案editI需要找到一种方法来修复前导的
。我会在更新时更新。如果你先找到路,请让我知道。我会一直打开它,直到有一个只有字符串值的答案,但谢谢你的帮助@DebosmitRay@JohnYounan我认为这与返回数据中的填充有关。您知道调用了什么函数,并且应该能够告诉您如何解析十六进制数据。文学士