Solidity
將 msg.value 類型轉換為 uint248
我是 Solidity 程式的新手,如果我的問題非常基本,我很抱歉。
我想知道我們是否可以將 msg.value 轉換為 uint248
下面的例子; 單位值;值 = (uint248) (msg.value);
對於鑄造,使用
value = uint248(msg.value);
在這種情況下進行轉換以節省 8 位是不值得的,並且由於解包可能會花費更多的氣體:請參閱為什麼 uint8 比 uint256 花費更多的氣體?
即使在使用 uint248 和 uint8 的結構時,最好實際測試您是否節省了一些氣體。
這是一個簡單的範例,用於展示使用Browser Solidity使用以下程式碼強制轉換
msg.value
為uint248
值: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.value
456.789 ETH 已轉換為uint248
欄位: