首页 > 其他分享 >solidity

solidity

时间:2023-06-18 16:35:05浏览次数:32  
标签:count 16 int solidity 二进制 uint public

一、Hello world

solidity_十进制

// SPDX-License-Identifier: MIT
//输入license的版本,MIT表公开的
// compiler version must be greater than or equal to 0.8.17 and less than 0.9.0
pragma solidity ^0.8.17; //也可以写成>0.8.13 <0.9.0

contract HelloWorld {  //定义一个叫 HelloWorld的合约
    string public greet = "Hello World!";  //greet为变量名
}

solidity_十进制_02

二、First Application

solidity_八进制_03

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Counter {
    uint public count;  //uint表示非负整数类型,初始值为0,可设置初始值
    //加了public表示公开,外界可以读取count的值,相当于自建了个get函数

    // Function to get the current count
    function get() public view returns (uint) {
        return count;
    }

    // Function to increment count by 1
    function inc() public { //public是个修饰符,表示谁都可以访问,因为这个函数不需要返回值,所以不用写 view、returns
        count += 1;
    }

    // Function to decrement count by 1
    function dec() public {
        // This function will fail if count = 0
        count -= 1;
    }
}

三、Primitive Data Types

solidity原生数据类型:boolean、uint256、int256、address

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Primitives {
    bool public boo = true;

    /*
    uint代表无符号整数,表示非负整数,有不同范围可供选择
    uint8的范围从0到2**8-1
    uint16的范围从0到2**16-1
    uint256的范围从0到2**256-1
    */

    uint8 public u8 = 1;
    uint public u256 = 456;
    uint public u = 123; // uint默认是uint256

    /*
    int类型允许使用负数
    与uint一样,从int8到int256有不同的范围
    int256的范围从-2**255到2**255-1
    int128的范围从-2**127到2**127-1
    int8的范围从-2**7到2**7-1
    */
    int8 public i8 = -1;
    int public i256 = 456;
    int public i = -123; // int默认是int256

    // minimum and maximum of int
    int public minInt = type(int).min;
    int public maxInt = type(int).max;

    address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c; //address钱包地址

    /*
    solidity具有多种字节数据类型
    固定大小字节数组数据类型的范围为bytes1~bytes32,默认值为0x00
    不定长字节数组类型声明为bytes,默认值为"",(0x)
    bytes1 后面数字1是表示1字节
    bytes2 后面数字2是表示2字节
    bytes3 后面数字3是表示3字节
    bytes4 后面数字4是表示4字节
    */
    bytes1 public a = 0xb5; //  [10110101] 就是16进制转2进制
    bytes1 public b; //  [00000000]

    // 默认值,未分配值的变量具有默认值
    bool public defaultBoo; // false
    uint public defaultUint; // 0
    int public defaultInt; // 0
    address public defaultAddr; // 0x0000000000000000000000000000000000000000
}

进制转换

solidity_十进制_04

二进制转十进制规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和

0b1011=1*2^0+1*2^1+0*2^2+1*2^3=11

八进制转十进制:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

0234=4*8^0+3*8^1+2*8^2=156

十六进制转十进制规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

 0X23A=10*16^0+3*16^1+2*16^2=570

十进制转二进制规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制

158=158/2=79……0、79/2=39……1、39/2=19……1、19/2=9……1、9/2=4……1、4/2=2……0、2/2=1……0;所以158=ob10011110

十进制转八进制规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制

131=131/8=16……3、16/8=2……0;所以131=0203

十进制转十六进制规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制

237=237/16=14……13;所以237=0XED

二进制转八进制规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可

0b11010110=011、010、110=3、2、6=0326

二进制转十六进制规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可

0b11010110=1101、0110=13、6=0XD6

八进制转二进制规则:将八进制数每1位,转成对应的一个3位的二进制数即可

0237=2、3、7=010、011、111=ob10011111

十六进制转二进制规则:将十六进制数每1位,转成对应的4位的一个二进制数即可

0X23B=2、3、B=0010、0011、1011=ob1000111011

四、

 



标签:count,16,int,solidity,二进制,uint,public
From: https://blog.51cto.com/u_15486072/6508777

相关文章

  • solidity
    一、Helloworld//SPDX-License-Identifier:MIT//输入license的版本,MIT表公开的//compilerversionmustbegreaterthanorequalto0.8.17andlessthan0.9.0pragmasolidity^0.8.17;//也可以写成>0.8.13<0.9.0contractHelloWorld{//定义一个叫HelloWorl......
  • Solidity基础
    Solidity基础RemixIDERemixIDE通常使用网页端:RemixSolidity中文文档:https://learnblockchain.cn/docs/solidity/Solidity基础:源文件布局声明许可证标识符://SPDX-License-Identifier:MIT用来标明代码的开源与否,开源许可如何声明编译指示:pragmasolidity......
  • Solidity语法
    Solidity语法数据类型(值类型)uint(unity,int),整数型可保存0,以及正整数范围:2**256 - 1,2的256次方address(地址类型,是合约语言的特殊数据类型)160位值,不允许操作;适合存储合约地址或外部人员密钥对地址具有balance属性,返回该帐户可用的以太币数量tr......
  • Solidity-变量和数据类型[基本类型]
    在solidity语言中,变量和数据类型分为三类:基本类型(bool、int、address等),复合类型(array、struct、mapping等)和特殊类型(enum、function、modifier等)。下面我们来对”基本类型“部分进行详细学习。基本类型布尔类型(bool)布尔类型(bool)占用1个字节的存储空间,即8个比特位,该类型只能取......
  • Hardhat 开发框架 - Solidity开发教程连载
    Decert.me要连载教程了,《Solidity开发教程》力求系统、深入的介绍Solidity开发,同时这是一套交互式教程,你可以实时的修改教程里的合约代码并运行。本教程来自贡献者@Tiny熊,让我们正式开始学习吧。如果你已经是Hardhat的使用者,可以直接跳到文末,参与挑战领取技能认证NF......
  • solidity学习一
    //SPDX-License-Identifier:MITpragmasolidity^0.8.8;contractSimpleStorage{uint256publicfnumber;//Peoplepublicperson=People({fnumber:2,name:"xiang"});structPeople{uint256fnumber;stringname;}......
  • 『0017』 - Solidity Types - Solidity 枚举(Enums)
    作者:黎跃春,案例下面的代码是我对官方案例作了简单的修改而成。ActionChoices就是一个自定义的整型,当枚举数不够多时,它默认的类型为uint8,当枚举数足够多时,它会自动变成uint16,下面的GoLeft==0,GoRight==1,GoStraight==2,SitStill==3。在setGoStraight方法中,我们传入的参数......
  • 『0016』 - Solidity Types - 玩转 Solidity 数组 (Arrays)
    作者:黎跃春,学习目标掌握Arrays的可变不可变的创建深度理解可变数组和不可变数组之间的区别二维数组memoryarrays的创建bytes0~bytes32、bytes与byte[]对比固定长度的数组(Arrays)固定长度类型数组的声明pragmasolidity^0.4.4;contractC{//数组的长度为5,数组里面的存储......
  • 『0012』 - Solidity Types - 字符串(String Literals)
    作者:黎跃春,案例字符串可以通过""或者''来表示字符串的值,Solidity中的string字符串不像C语言一样以\0结束,比如我的微信号liyc1215这个字符串的长度就为我们所看见的字母的个数,它的长度为8。pragmasolidity^0.4.4;contractStringLiterals{string_name;//状态变量......
  • 『0009』 - Solidity Types - 布尔(Booleans)
    作者:黎跃春,布尔(Booleans)bool:可能的取值为常量值true和false。支持的运算符:!逻辑非&&逻辑与||逻辑或==等于!=不等于备注:运算符&&和||是短路运算符,如f(x)||g(y),当f(x)为真时,则不会继续执行g(y)在f(x)&&g(y)表达式中,当f(x)为false时,则不会执行g(y)。boola=true;boolb=......