字面量和基本類型之間的轉(zhuǎn)換

2022-05-12 17:01 更新

整數(shù)類型

十進制和十六進制數(shù)字文字可以隱式轉(zhuǎn)換為任何足夠大的整數(shù)類型,無需截斷即可表示:

uint8 a = 12; // fine
uint32 b = 1234; // fine
uint16 c = 0x123456; // fails, since it would have to truncate to 0x3456

筆記

在 0.8.0 版本之前,任何十進制或十六進制數(shù)字文字都可以顯式轉(zhuǎn)換為整數(shù)類型。從 0.8.0 開始,此類顯式轉(zhuǎn)換與隱式轉(zhuǎn)換一樣嚴格,即,僅當文字符合結(jié)果范圍時才允許它們。

固定大小的字節(jié)數(shù)組

十進制數(shù)字文字不能隱式轉(zhuǎn)換為固定大小的字節(jié)數(shù)組。十六進制數(shù)字文字可以,但前提是十六進制數(shù)字的數(shù)量完全適合字節(jié)類型的大小。作為一個例外,具有零值的十進制和十六進制文字都可以轉(zhuǎn)換為任何固定大小的字節(jié)類型:

bytes2 a = 54321; // not allowed
bytes2 b = 0x12; // not allowed
bytes2 c = 0x123; // not allowed
bytes2 d = 0x1234; // fine
bytes2 e = 0x0012; // fine
bytes4 f = 0; // fine
bytes4 g = 0x0; // fine

字符串文字和十六進制字符串文字可以隱式轉(zhuǎn)換為固定大小的字節(jié)數(shù)組,如果它們的字符數(shù)與字節(jié)類型的大小匹配:

bytes2 a = hex"1234"; // fine
bytes2 b = "xy"; // fine
bytes2 c = hex"12"; // not allowed
bytes2 d = hex"123"; // not allowed
bytes2 e = "x"; // not allowed
bytes2 f = "xyz"; // not allowed

地址

地址文字中所述,通過校驗和測試的正確大小的十六進制文字屬于address類型。沒有其他文字可以隱式轉(zhuǎn)換為該address類型。

bytes20或任何整數(shù)類型的顯式轉(zhuǎn)換address導(dǎo)致.address payable

可以轉(zhuǎn)換為via 。address aaddress payablepayable(a)

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號