Solidity
uint16轉換問題
所以我想使用 Typescript 測試這個 Solidity 程式碼,但遇到了類型轉換問題。
uint16 base; function addNumberToBase(uint16 number_) { // This number must be between 1 ~ 5 require(number_ < 1 && number_ >= 5, "This number must be between 1 ~ 5"); base += number_; }
這是 TS 測試程式碼,我在這裡嘗試了很多類型,但沒有奏效。
it("Should add a number between 1 ~ 5 to base", async () => { const number_ : Number = 4; await contract.addNumberToBase(number_); // But here getting this error: // Error: VM Exception while processing transaction: revert This number must be between 1~5 });
使用Uint16Array和BigNumberish類型也是如此。
我的建議是,這是因為在兩種語言的類型之間進行轉換時存在問題。那麼,是否有任何有用的庫來轉換uint16?
謝謝。
這一行:
require(number_ < 1 && number_ >= 5, "This number must be between 1 ~ 5");
這是不可能的。
它應該說:
require(number_ >= 1 && number_ <= 5, "This number must be between 1 ~ 5");
如果你會得到一個 JavaScript 數字或 BigNumber,我不是 100%,因為
uint16
它可以由 JavaScript 處理。對於 JavaScript 原生類型來說太大的類型,它總是BigNumber 。uint256
如果返回的值看起來像一個奇怪的對象,用
toString(10)
它來解析它,例如var value = parseInt(response.toString(10));
希望能幫助到你。