FISCO-BCOS / FISCO-BCOS/console
solidity合约参数如果是bytes,console解析16进制字符串有误
Open
bug
resolved
- Dominant language
- Shell
- Stars
- 96
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
在类`ContractClassFactory`解析参数`byte[]`时,是直接获取字符串的bytes,如下
```java
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);`
Contributor guide
Assessment
This issue has not been assessed yet.