FISCO-BCOS / FISCO-BCOS/console

solidity合约参数如果是bytes,console解析16进制字符串有误

Open
#258 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.