真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Solidity數(shù)據(jù)類型有哪些

本篇內(nèi)容介紹了“Solidity數(shù)據(jù)類型有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

站在用戶的角度思考問題,與客戶深入溝通,找到察哈爾右翼中旗網(wǎng)站設(shè)計與察哈爾右翼中旗網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋察哈爾右翼中旗地區(qū)。

4.5. 數(shù)據(jù)類型

4.5.1. 數(shù)值型

int/uint:變長的有符號或無符號整型。變量支持的步長以8遞增,支持從uint8到uint256,以及int8到int256。需要注意的是,uint和int默認(rèn)代表的是uint256和int256。

有符號整型能夠表示負(fù)數(shù)的代價是其能夠存儲正數(shù)的范圍的縮小,因為其約一半的數(shù)值范圍要用來表示負(fù)數(shù)。如:uint8的存儲范圍為0 ~ 255,而int8的范圍為-127 ~ 127

支持的運(yùn)算符:



比較:<=,<,==,!=,>=,>,返回值為bool類型。

位運(yùn)算符:&,|,(^異或),(~非)。

數(shù)學(xué)運(yùn)算:+,-,一元運(yùn)算+,*,/,(%求余),(**次方),(<<左移),(>>右移)。
 

小數(shù)由"."組成,在他的左邊或右邊至少要包含一個數(shù)字。如"1.",".1","1.3"均是有效的小數(shù)。

4.5.1.1. 加 +,減 -,乘 *,除 / 運(yùn)算演示
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract Math {

  function mul(int a, int b) public pure returns (int) {

      int c = a * b;
      return c;
  }

  function div(int a, int b) public pure  returns (int) {

      int c = a / b;
      return c;
  }

  function sub(int a, int b) public pure  returns (int) {
      
      return a - b;
  }

  function add(int a, int b) public pure  returns (int) {

      int c = a + b;
      return c;
  }
}
4.5.1.2. 求余 %
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract Math {

  function m(int a, int b) public pure returns (int) {

      int c = a % b;
      return c;
  }
}
4.5.1.3. 冪運(yùn)算
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract Math {

  function m(uint a, uint b) public pure returns (uint) {

      uint c = a**b;
      return c;
  }

}
4.5.1.4. 與 &,| 或,非 ~,^ 異或
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract Math {

  function yu() public pure returns (uint) {

      uint a = 3; // 0b0011
      uint b = 4; // 0b0100
    
      uint c = a & b; // 0b0000
      return c; // 0
  }

  function huo() public pure returns (uint) {

      uint a = 3; // 0b0011
      uint b = 4; // 0b0100
    
      uint c = a | b; // 0b0111
      return c; // 7
  }

  function fei() public pure returns (uint8) {

      uint8 a = 3; // 0b00000011
      uint8 c = ~a; // 0b11111100
      return c; // 0
  }
  
  function yihuo() public pure returns (uint) {

      uint a = 3; // 0b0011
      uint b = 4; // 0b0100
    
      uint c = a ^ b; // 0b0111
      return c; // 252
  }
}
4.5.1.5. 位移
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn

contract Math {

  function leftShift() public pure returns (uint8) {

      uint8 a = 8; // 0b00001000
      uint8 c = a << 2; // 0b00100000
      return c; // 32
  }

  function rightShift() public pure returns (uint8) {

      uint8 a = 8; // 0b00001000
      uint8 c = a >> 2; // 0b00000010
      return c; // 2
  }

}



a << n 表示a的二進(jìn)制位向左移動n位,在保證位數(shù)沒有溢出的情況下等價于 a乘以2的n次方。
a >> n 表示a的二進(jìn)制位向右移動n位,在保證位數(shù)沒有溢出的情況下等價于 a除以2的n次方。
 

4.5.2. 字符串

string 字符串類型,字符串可以通過""或者''來定義字符串的值

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract StringTest {

    string name;
    
    function StringTest() public{
        name = "default";
    }
    function setName(string _name) public{
        name = _name;
    }
    function getName() public view returns(string){
        return name;
    }
}
4.5.2.1. 獲取字符串長度

在 Solidity 中想獲得字符串長度必須轉(zhuǎn)成 bytes 類型然后使用 length 屬性獲得。bytes(string).length

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract StringTest {
    
    
    string public name = "http://www.netkiller.cn";
    

    function nameBytes() public constant returns (bytes) {
        
        return bytes(name);
    }
    
    function nameLength() public constant returns (uint) {
        
        return bytes(name).length;
    }

    function length(string _name) public pure returns (uint) {
        
        return bytes(_name).length;
    }
    
}

提示

注意:漢字采用UTF8編碼,一個漢字等于3個字節(jié),當(dāng)你使用 length("景峯") 測試時會返回長度 6。


4.5.3. 布爾(Booleans)

bool: 可能的取值為常量值true和false。支持的運(yùn)算符:

! 邏輯非

&& 邏輯與

|| 邏輯或

== 等于

!= 不等于

bool a = true;
bool b = !a;

// a == b -> false
// a != b -> true
// a || b -> true
// a && b -> false

4.5.4. 字節(jié)類型

bytes names = "netkiller"
bytes9 _names = "netkiller";
bytes(name)[0] = 0xFF;

bytes memory _tmp = new bytes(3);
_tmp[0] = 0x4e;
_tmp[1] = 0x65;
_tmp[2] = 0x6f;
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract BytesTest {
    
    bytes names = "netkiller";
    
    function get() public view returns (bytes) {
        
        return names;
    }
    function getBytes2() public pure returns (bytes2) {
        bytes9 _names = "netkiller";
        return bytes2(_names);
    }
    function bytesToString() public constant returns (string) {
        
        return string(names);
    }
   
    function copyBytes(bytes b) public pure returns (bytes) {
       
       bytes memory tmp = new bytes(b.length);
       
       for(uint i = 0; i < b.length; i++) {
           
           tmp[i] = b[i];
       }
       
       return tmp;
    }
    
    function bytesToString2() public pure returns (string) {
        bytes memory _tmp = new bytes(3);
        _tmp[0] = 0x4e;
        _tmp[1] = 0x65;
        _tmp[2] = 0x6f;
        return string(_tmp);
    }
   
}

.length可以動態(tài)修改字節(jié)數(shù)組的長度

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract BytesTest2 {
    
    // 初始化一個兩個字節(jié)空間的字節(jié)數(shù)組
    bytes public array = new bytes(2);
    
    // 設(shè)置修改字節(jié)數(shù)組的長度
    function setLength(uint _len) public {
        array.length = _len;
    }
    
    // 返回字節(jié)數(shù)組的長度
    function getLength() constant public returns (uint) {
        return array.length;
    }
    
    // 往字節(jié)數(shù)組中添加字節(jié)
    function pushArray(byte _tmp) public{
        array.push(_tmp);
    }
    
}

4.5.5. 數(shù)組

//創(chuàng)建一個memory的數(shù)組
	uint[] memory a = new uint[](7);
	
	uint[] x = [uint(1), 3, 4];
	
    bytes memory b = new bytes(10);

二維數(shù)組

uint [2][3] T = [[1,2],[3,4],[5,6]];
pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract ArrayTest {
    
    uint [] array = [1,2,3,4,5];
    
    // 通過for循環(huán)計算數(shù)組內(nèi)部的值的總和
    function sum() constant public returns (uint) {
        uint num = 0;
        for(uint i = 0; i < array.length; i++) {
            num = num + array[i];
        }
        return num;
    }
    
    function sumNumbers(uint[] _numbers) public pure returns (uint) {
        uint num = 0;
        for(uint i = 0; i < _numbers.length; i++) {
            num = num + _numbers[i];
        }
        return num;
    }
    
}
4.5.5.1. length

.length 屬性是活動數(shù)組的尺寸

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract ArrayLength {
    
    uint [] array = [1,2,3,4,5];
    
    function getLength() public constant returns (uint) {
        
        return array.length;
    }
    
}
4.5.5.2. push() 方法

通過 push 可以向數(shù)組中添加數(shù)據(jù)

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract ArrayLength {
    
    uint [] array = [1,2,3,4,5];
    
    function pushArray() public {
        
        array.push(6);
    }
    
    function getLength() public constant returns (uint) {
        
        return array.length;
    }
    
}

4.5.6. 枚舉類型

State 就是一個自定義的整型,當(dāng)枚舉數(shù)不夠多時,它默認(rèn)的類型為uint8,當(dāng)枚舉數(shù)足夠多時,它會自動變成uint16,枚舉下標(biāo)定義從左至右從零開始。

New=0, Pending=1, Done=2, Deleted=3

訪問枚舉方式 State.New 實際等于數(shù)字 0

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract EnumTest {
    enum State { New, Pending, Done, Deleted }
    State state = State.New;

    function set(State _state) public {
        state = _state;
    }

    function get() constant public returns (State) {
        return state;
    }

}

枚舉用來定義狀態(tài)

pragma solidity ^0.4.0;

contract Purchase {
    enum State { Created, Locked, Inactive } // Enum
}

4.5.7. 結(jié)構(gòu)體

定義結(jié)構(gòu)體

struct Voter {
        uint weight; // weight is accumulated by delegation
        bool voted;  // if true, that person already voted
        address delegate; // person delegated to
        uint vote;   // index of the voted proposal
    }

    // This is a type for a single proposal.
    struct Proposal {
        bytes32 name;   // short name (up to 32 bytes)
        uint voteCount; // number of accumulated votes
    }

演示例子

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract Students {
    
    struct Person {
        string name;
        uint age;
        uint class;
        
    }

    Person person = Person("Neo",18,1);

    function getPerson() public view returns(string){
        return person.name;
    }
}

4.5.8. address

address public minter;

下面是一個獲得賬號余額的例子。

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract AddressTest{
    
    function getBalance(address _addr) public constant returns (uint){
        return _addr.balance;
    }

}
4.5.8.1. payable
4.5.8.2. .value()
4.5.8.3. .gas()

4.5.9. mapping

mapping 就是圖數(shù)據(jù)結(jié)構(gòu),由 key 和 value 組成。

pragma solidity ^0.4.20;
//Author: netkiller 
//Home: http://www.netkiller.cn
contract MappingExample {
    
    mapping(uint => string) map;

    function put(uint key, string value) public {
        map[key] = value;
    }
    
    function get(uint key) constant public returns (string) {
        return map[key];
    }
}

“Solidity數(shù)據(jù)類型有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


分享名稱:Solidity數(shù)據(jù)類型有哪些
本文網(wǎng)址:http://weahome.cn/article/gihoes.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部