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];   
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值