console
console copied to clipboard
solidity合约参数如果是bytes,console解析16进制字符串有误
在类ContractClassFactory
解析参数byte[]
时,是直接获取字符串的bytes,如下
else if (type[i] == byte[].class) {
if (params[i].startsWith("\"") && params[i].endsWith("\"")) {
byte[] bytes = params[i].substring(1, params[i].length() - 1)..getBytes();
obj[i] = bytes;
} else {
System.out.println("Please provide double quote for byte String.");
System.out.println();
return null;
}
}
16进制字符串应该需要特殊转化
byte[] bytes = Numeric.hexStringToByteArray(params[i].substring(1, params[i].length() - 1));
所以byte[]
到String
也不能直接new String(bytes)
,应该是Numeric.toHexString(bytes);
我也被这个bug坑过-_-!!!
这个问题,1.1.0
之后的控制台版本已经解决。