Solidity

將 msg.value 類型轉換為 uint248

  • February 20, 2017

我是 Solidity 程式的新手,如果我的問題非常基本,我很抱歉。

我想知道我們是否可以將 msg.value 轉換為 uint248

下面的例子; 單位值;值 = (uint248) (msg.value);

對於鑄造,使用value = uint248(msg.value);

在這種情況下進行轉換以節省 8 位是不值得的,並且由於解包可能會花費更多的氣體:請參閱為什麼 uint8 比 uint256 花費更多的氣體?

即使在使用 uint248 和 uint8 的結構時,最好實際測試您是否節省了一些氣體。

這是一個簡單的範例,用於展示使用Browser Solidity使用以下程式碼強制轉換msg.valueuint248值:

pragma solidity ^0.4.8;

contract Test {
   uint248 public value;

   function Test() {
       value = 123;
   }

   function () payable {
       value = uint248(msg.value);
   }
}

下面的螢幕顯示了將程式碼部署到 JavaScript VM:

在此處輸入圖像描述

我將Value欄位設置為 456.789 並點擊**(回退)**功能,模擬向合約發送 456.789 ETH:

在此處輸入圖像描述

我已將Value欄位設置回 0 並點擊value按鈕以顯示msg.value456.789 ETH 已轉換為uint248欄位:

在此處輸入圖像描述

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