080-Solidity基礎入門 (一)

 

 

 

今天,自己又要重新複習一次Solidity

計算機這個行業,學了忘,忘了學,學了還得忘

感覺自己一直很努力的在學習

但是卻沒有一種付出得到回報的感覺

 

 

 

 

 

Solidity

先寫一個最簡單的Hello World吧

pragma solidity >=0.4.22 <0.7.0;

contract Hello{

    string str="Hello World";

    function hello() public view returns(string memory){
        return str;
    }
}

 

 

 

 

這就是最簡單的合約了

 


然後我們來看下4種權限標識符
1.public
2.private
3.internal
4.external

 


然後view和pure
view和pure都是不需要花錢的
view是涉及到了局部變量,但是不改變這個局部變量
pure是根本沒有設計到局部變量

 

 

 

 

 

 

整型
int 和uint
int是有符號的
uint是沒符號的


基本上用uint256就行了

 

位運算
a=a<<1
這就是
a=a*2

 

 

固定長度字節數組
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   bytes1 a=0xaa;
   bytes2 b=0xbbbb;
   bytes3 c=0xcccccc;
   
   function getLength1() public view returns(uint256){
       return a.length;
   }
   
   function getLength2() public view returns(uint256){
       return b.length;
   }
   
   function getLength3() public view returns(uint256){
       return c.length;
   }
}

 

 

 

 

動態字節數組
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   bytes a = new bytes(2);
   
   function setA(bytes memory _a) public {
       a=_a;
   }
   
   function getLength() public view returns(uint256){
       return a.length;
   }
}

 

 

 

字符串轉bytes
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   string str="helloworld";
   
   function getBytes() public view returns(bytes memory){
       return bytes(str);
   }
}

 


字節數組長度
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   string str="helloworld";
   
   function getBytes() public view returns(bytes memory){
       return bytes(str);
   }
   
   function getLength() public view returns(uint256){
       return bytes(str).length;
   }
}

 

 

 

獲取字符串第一個字符

pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   string str="helloworld";
   
   function getBytes(uint256 i) public view returns(bytes1){
       return bytes(str)[i];
   }
   
   function changeStr() public{
       bytes(str)[0]="H";
   }
   
   function getStr() public view returns(string memory){
       return str;
   }
}

 

 

 

String Bytes
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   string str="helloworld";
   
   function getBytes(uint256 i) public view returns(bytes1){
       return bytes(str)[i];
   }
   
   function changeStr() public{
       bytes(str)[0]="H";
   }
   
   function getStr() public view returns(string memory){
       return str;
   }
   
   function changeStr(uint256 index) public{
       bytes(str)[index]="H";
   }
   
   function changeStr(bytes1 b) public{
       bytes(str)[0]=b;
   }
}

 

 

 

 

固定字節數組轉化爲動態字節數組
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
   bytes2 b=0xaabb;
   
   function fixedBytesToDynamic() public view returns(bytes memory){
       
       bytes memory dynamic=new bytes(b.length);
       for(uint i=0; i<b.length;i++){
           dynamic[i]=b[i];
       }
       
       return dynamic;
   }
   
}

 

 

 

 

bytes和string的相互轉化
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
    function bytesToString(bytes memory b) public pure returns(string memory){
        return string(b);
    }
   
    function stringToBytes(string memory s) public pure returns(bytes memory b){
        return bytes(s);
    }
}

 

 

 

 

數組
pragma solidity >=0.4.22 <0.7.0;

contract Hello{
    
    function getArray() public pure returns(uint256[3] memory){
        return [uint256(1),2,3];   
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章