蚂蚁区块链大赛 | 调用智能合约

 

官方给出的智能合约示例是一个投票程序,候选人candidate的数据类型是Bytes32。利用java SDK调用合约的 voteForCandidate(bytes32 candidate) 接口,发现一个问题:

我输入的参数“simmel”是string类型,而SDK中不提供将string类型转化为bytes32类型的函数。

又看到代码中涉及Bytes32型变量的地方都要求输入byte[](长度为32)而不是Bytes32

于是自己写了一个将string转化为长为32的byte型数组的函数:

public static byte[] stringToBytes(String str){
    byte[] result = new byte[32]; // 此时result的值为32个0
    byte[] stringToByte = str.getBytes(); // 将string类型转化为byte[]类型
    int len = stringToByte.length;

    for(int i=0; i

在使用时示例如下:

parameters.addBytes32(stringToBytes("simmel"));

问题解决~

 

 

 

你可能感兴趣的:(区块链开发日记)