web3j中字符串如何转换Bytes32?我想用web3j发送bytes32类型的参数到SmartContract函数,它总是抛出异常。
先来看一段代码:
public String solFunction(String str) {
byte[] byteValue = DatatypeConverter.parseHexBinary(str);
Bytes32 strInBytes = new Bytes32(byteValue);
try {
Uint256 value = contract.showPoint(strInBytes).get();
return value.getValue().toString();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return null;
}
// web3j generated java code for solidity program
public Future<Uint256> showPoint(Bytes32 byteValue) {
Function function = new Function("showPoint",
Arrays.<Type>asList(rewardType),
Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
return executeCallSingleValueReturnAsync(function);
}
我已经检查了web3j的Numeric datatype
转换,并给出了解决方案。
Input byte array must be in range 0 < M <= 32 and length must match