Solidity语言学习笔记————13、固定大小字节数组

本文介绍Solidity中固定大小字节数组的创建及使用限制,包括长度和内容的不可变性,并提供了具体示例。

固定大小字节数组的构建

Solidity中固定大小的字节数组可以通过关键字“byte+n”来实现,其中n为该数组的存储空间的大小,其单位为字节。

例如:byte6  a————表示一个6个字节大小的数组a。需要注意的是我们经常看到的“byte”就是“bytes1”。

实例如下:

pragma solidity ^0.4.0;

contract test{

    //数据用十六进制表示为: 0x6a667575856568757e

    byte public a = 0x6a; 
    bytes1 public b = 0x6a; 
    bytes2 public c = 0x6a66; 
    bytes3 public d = 0x6a6675; 
   
    // ...

    bytes8 public e = 0x6a66757585656875; 
    bytes9 public f = 0x6a667575856568757e;

}


说明:当你要存储的数据远大与数组当中可用的空间的时候会直接报错!

固定大小字节数组的长度不可变

对于固定大小的字节数组而言,他们的数组长度值是一个恒定的值,无法通过赋值来进行修改,例如:

pragma solidity ^0.4.0;

contract test{

    bytes6 info=0x666666666666;
    function length(){
        info.length=100;
    }
}


固定大小字节数组的内容字节不可变

对于固定大小的字节数组而言,一旦该数组完成初始化之后,其内容是不可修改的。例如:

pragma solidity ^0.4.0;

contract test{

    bytes6 info=0x666666666666;
    function length(){
        info[0]=6;
    }
}



后续内容更精彩,敬请期待!


Solidity是用于编写智能合约的编程语言,在区块链开发中应用广泛,而Web.js(如web3.js)则是用于与区块链进行交互的JavaScript库,二者在区块链前端开发中紧密相关。 在岗位方面,Solidity开发主要负责智能合约的开发,从业者除了要了解相关的Solidity语法知识,还需要接触各种dapp,该岗位在上海、深圳、北京较多,其他省份基本没有;而web3.js开发与传统的web2前端开发工程师类似,学习基础的前端知识,多了解一个web3的库即可,主要开发前端js代码,通过js进行合约交互和绘制合约界面,EVM开发岗位较多,需要了解EVM底层原理 [^1]。 从技术应用层面看,对于前端开发者而言,Web2应用的开发主要依赖于传统的Web技术,如HTML、CSS、JavaScript等;而Web3应用的开发,如涉及Solidity应用前端,需要掌握更多的区块链技术、去中心化技术以及智能合约编程等方面的知识,同时也需要更加注重用户隐私和安全等方面的考虑 [^3]。 在使用web3.js与Solidity合约交互时,web3可通过contract调用部署的合约,这里的合约通常是用Solidity语言编写的。web3本身也有一些api可以直接和区块链交互。不过,不同区块链上即便为同一种代币,也是不互相关联的,可看成是两个数据库的数据。并且不同版本的web3方法可能不一样,文档有些又不全,需要类比和阅读源码,多次测试 [^2]。 以一个web3博客系统为例,其涉及的技术栈包括Next.js、Polygon、Solidity、The Graph、IPFS、Hardhat等,其中Hardhat是Ethereum开发环境,web3modal可方便快速地连接钱包等 [^4]。 以下是一个简单的使用web3.js调用Solidity合约的示例代码: ```javascript const Web3 = require('web3'); // 假设已经部署的合约地址和ABI const contractAddress = 'YOUR_CONTRACT_ADDRESS'; const contractABI = [/* 合约ABI */]; // 初始化web3实例 const web3 = new Web3('YOUR_PROVIDER_URL'); // 获取合约实例 const contract = new web3.eth.Contract(contractABI, contractAddress); // 调用合约的某个方法 contract.methods.someFunction().call() .then(result => { console.log('合约方法调用结果:', result); }) .catch(error => { console.error('调用合约方法时出错:', error); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值