Solidity
不正確的 bytes32 到字元串的轉換
我的solidity 函式正在返回一個
bytes32[]
我正在循環Javascript
並轉換為string
usingweb3.toAscii()
的 . 在控制台中列印它會在�
末尾顯示額外的字元,如下所示返回 bytes32 的函式
function myBets() public view returns (uint[] memory, bytes32[] memory, bytes32[] memory, int[] memory){ uint n = betterCacheData[msg.sender].length; uint[] memory betValues = new uint[](n); bytes32[] memory options = new bytes32[](n); bytes32[] memory winStatus = new bytes32[](n); int[] memory moneyLineValues = new int[](n); for(uint i=0; i<n; i++){ uint betId = betterCacheData[msg.sender][i].betId; uint optionId = betterCacheData[msg.sender][i].optionId; betValues[i] = betterCacheData[msg.sender][i].betValue; options[i] = bets[betId].moneyLineData[optionId].option; if(bets[betId].betStatus == BetStatus.Open || bets[betId].betStatus == BetStatus.Closed){ winStatus[i] = "pending"; } else{ if(bets[betId].correctChoice == optionId){ winStatus[i] = "won"; moneyLineValues[i] = bets[betId].moneyLineData[optionId].value; } else{ winStatus[i] = "lost"; } } } return (betValues, options, winStatus, moneyLineValues); }
任何幫助將不勝感激!謝謝!
我使用
byte32
十六進製到字元串轉換器網站將這些值轉換為字元串。該網站還顯示這些奇怪的字元。然後我嘗試剝離之前的所有字元,包括所有字元
x
,0's
現在我得到了所需的輸出然後我嘗試傳遞
776fe
並web3.toAscii()
獲得所需的輸出。TLDR 改用
web3.toUtf8()
_