- Solidity 教程
- Solidity - 首頁
- Solidity - 概述
- Solidity - 環境搭建
- Solidity - 基本語法
- Solidity - 第一個應用
- Solidity - 註釋
- Solidity - 資料型別
- Solidity - 變數
- Solidity - 變數作用域
- Solidity - 運算子
- Solidity - 迴圈
- Solidity - 條件語句
- Solidity - 字串
- Solidity - 陣列
- Solidity - 列舉
- Solidity - 結構體
- Solidity - 對映
- Solidity - 型別轉換
- Solidity - 以太幣單位
- Solidity - 特殊變數
- Solidity - 樣式指南
- Solidity 函式
- Solidity - 函式
- Solidity - 函式修飾符
- Solidity - view 函式
- Solidity - pure 函式
- Solidity - 回退函式
- 函式過載
- 數學函式
- 加密函式
- Solidity 常用模式
- Solidity - 提款模式
- Solidity - 訪問限制
- Solidity 高階篇
- Solidity - 合約
- Solidity - 繼承
- Solidity - 建構函式
- Solidity - 抽象合約
- Solidity - 介面
- Solidity - 庫
- Solidity - 彙編
- Solidity - 事件
- Solidity - 錯誤處理
- Solidity 有用資源
- Solidity - 快速指南
- Solidity - 有用資源
- Solidity - 討論
Solidity - 型別轉換
Solidity 允許隱式和顯式型別轉換。Solidity 編譯器允許在兩種資料型別之間進行隱式轉換,前提是沒有隱式轉換的可能性並且沒有資訊丟失。例如,uint8 可以轉換為 uint16,但 int8 不能轉換為 uint256,因為 int8 可以包含 uint256不允許的負值。
顯式轉換
我們可以使用建構函式語法將一種資料型別顯式轉換為另一種資料型別。
int8 y = -3; uint x = uint(y); //Now x = 0xfffff..fd == two complement representation of -3 in 256 bit format.
轉換為較小型別會丟失高位位元。
uint32 a = 0x12345678; uint16 b = uint16(a); // b = 0x5678
轉換為較大型別會在左側新增填充位。
uint16 a = 0x1234; uint32 b = uint32(a); // b = 0x00001234
轉換為較小位元組會丟失高位資料。
bytes2 a = 0x1234; bytes1 b = bytes1(a); // b = 0x12
轉換為較大位元組會在右側新增填充位。
bytes2 a = 0x1234; bytes4 b = bytes4(a); // b = 0x12340000
固定大小位元組與整數之間的轉換隻有在兩者大小相同時才可能。
bytes2 a = 0x1234; uint32 b = uint16(a); // b = 0x00001234 uint32 c = uint32(bytes4(a)); // c = 0x12340000 uint8 d = uint8(uint16(a)); // d = 0x34 uint8 e = uint8(bytes1(a)); // e = 0x12
如果不需要截斷,十六進位制數可以賦值給任何整數型別。
uint8 a = 12; // no error uint32 b = 1234; // no error uint16 c = 0x123456; // error, as truncation required to 0x3456
廣告