zoukankan      html  css  js  c++  java
  • 【Solidity】学习(1)

    string

    string类型不可以直接通过length读取字符串长度,也不可以直接通过下标直接访问数据元素

    使用的方法是:强制类型转换为bytes

    其中," " 和‘ ’都可以表示

    pragma solidity ^0.4.0;
    
    contract first{
        string public str = 'hello world';
        function getstr() returns(uint){
            return bytes(str).length;
        }
        function changestr() {
            bytes(str)[0]='b';
        }
    }
    

    string类型,特殊字和英文字符数字字母占一个字节,中文汉字和中文字符占3个字节

    pragma solidity ^0.4.0;
    
    contract first{
        string public strCN ="你好,世界";    //中文标点,逗号
        string public strSY = "%$#@!";
        string public strCNSY = ",。";    //中文标点,逗号和句号
        string public str = 'hello world';
        function getstr() view returns(uint){
            return bytes(str).length;  
        }
        function getstr1() view returns(uint){
            return bytes(strCN).length;
        }
        function getstr2() view returns(uint){
            return bytes(strCNSY).length;
        }
    }

    结果为

     bytes数组转化为string,强制类型转化

    pragma solidity ^0.4.0;
    
    contract BytesToString{
        bytes public byt = new bytes(2);
        function Init(){
            byt[0] = 0x7a;
            byt[1] = 0x68; 
        }
        function bytesToString()view returns(string){
            return string(byt);
        }
    }

    数组

    固定长度数组

    从前到后截断,在末尾补充0

    pragma solidity ^0.4.0;
    
    contract first{
        bytes6 public a = 0x1929192031;
        function getbyte1() view returns(bytes1){
            return bytes1(a);
        }
        function getbyte4()view returns(bytes4){
            return bytes4(a);
        }
        function getbyte18()view returns(bytes12){
            return bytes12(a);
        }
    }

    可变长度数组

    bytes a = new bytes(2);

     将固定长度数组赋值给可变长度数组

    pragma solidity ^0.4.0;
    
    contract first{
        bytes6 public str = 0x1929192031;
        function getNewStr()view returns(bytes){
            // 函数内部加上 memory
            bytes memory newstr = new bytes(str.length);
            //length为uint类型,因此i要写成uint
            for(uint i = 0; i < str.length; ++i){
                newstr[i] = str[i];
            }
            return newstr;
        }
    }

    固定数组

    uint [5] arr = [1,2,3,4,5];
    //是中括号不是大括号
    • 可以直接获取数组长度,但是不可以修改length,不可以push()

    非固定数组

    • 可以直接获取数组长度
    • 可以修改length,补0或者截断
    • 可以push

    二维数组

    solidity语言二维数组不同于c,java

    pragma solidity ^0.4.0;
    
    contract BytesToString{
        //定义时候arr[i][j]表示一共j个元素,每个元素有i项
        uint[2][3] arr= [[11,22],[33,44],[55,66]];
        function sumGrade()view returns(uint){
        //调用时候,arr[i][j]表示第i+1行,j+1列的元素
            return arr[2][1];
        }
    }

    可变长的的二位数组可以改变数组长度和每行中列的个数

    字面量

    最小匹配原则

    可以强制类型转化

     

  • 相关阅读:
    统计知识选讲(二)——主成分分析(PCA)的推导和应用
    统计知识选讲(一)——主成分分析(PCA)的思想
    数模学习笔记(八)——遗传算法
    数模学习笔记(六)——灰色系统
    数模学习笔记(五)——BP神经网络
    数模学习笔记(四)——AHP
    数模学习笔记(三)
    数模学习笔记(二)
    推荐决策 对比user-based 和item-based推荐算法
    Mysql事件学习
  • 原文地址:https://www.cnblogs.com/lhw-/p/10638729.html
Copyright © 2011-2022 走看看