Arrays

幫助儲存字節數組

  • October 23, 2018
pragma solidity ^0.4.0;

contract Storage {

   uint8[5][5] public data;

   function Storage() public {

   }

   function setData(uint8[] _data) {
       for (int i=0;i<5; i++)
           data[i][1]=_data[i];
   }

   function getData() public constant returns(uint8[5][5]){
       return data;
   }


}

在我的 web3 頁面上,我呼叫合約來儲存數據:

       var byteArray = new Uint8Array(25);                
       var randomArray = [0x80, 0x02, 0x03, 0x04, 0x05,
                         0x01, 0x02, 0x03, 0x04, 0x05,
                         0x01, 0x02, 0x03, 0x04, 0x05,
                         0x01, 0x02, 0x03, 0x04, 0x05,
                         0x01, 0x02, 0x03, 0x04, 0x05];    
storeSC.setData(byteArray , function (error, result) {
       if (!error)
           document.getElementById('response').innerHTML = 'Success:' + result
       else
           console.error(error);
   });

任何人都可以向我解釋為什麼傳遞randomArray一切都有效,但我發送的數據比需要的多得多,傳遞 byteArray我得到:

invalid number of arguments to solidity function

我只是希望能夠將一組字節傳遞給方法 setData,請問有什麼幫助嗎?

我懷疑這是使用 js 類型數組對象的問題,它是單個實例,它不是數組。可能首先轉換為數字數組,使用此https://stackoverflow.com/q/12760643/442396

引用自:https://ethereum.stackexchange.com/questions/41548