کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

تبدیل انواع داده در سالیدیتی

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

تبدیل به نوع بالاتر، بیت‌های padding را به سمت چپ اضافه می‌کند.

    uint16 a = 0x1234;
    uint32 b = uint32(a); // b = 0x00001234 

تبدیل به بایت های کوچکتر:

bytes2 a = 0x1234;
    bytes1 b = bytes1(a); // b = 0x12

تبدیل به بایت بزرگتر، بیت های padding را به سمت راست اضافه می کند.

    bytes2 a = 0x1234;
    bytes4 b = bytes4(a); // b = 0x12340000

تبدیل بین بایت های اندازه ثابت و int تنها زمانی امکان پذیر است که هر دو اندازه یکسانی داشته باشند.

ytes2 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
1402/01/10 795
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...