教程20国产编程语言CbrotherByteArray字节操作
ByteArray 类
CBrother提供了ByteArray类来处理字节流 var myByte = new ByteArray(1024 * 10); //创建一个10KB的缓冲 var myByte2 = new ByteArray(); //不传值默认为4KB大小
函数
描述
参数
返回值
用法
setLittleEndian(little)
设置低位编址(LE)
little:true为低位编址
不设置默认是高位编址(BE)
无
myByte.setLittleEndian(true)
isLittleEndian()
查看编址方式
无
true为低位编址(LE)
false为高位编址(BE)
var isLE = myByte.isLittleEndian()
getSize()
获取缓冲长度
无
长度,构造时候传入的值
var size = myByte.getSize()
expand(newLen)
扩展缓冲区,数据保留
newLen:字节
无
myByte.expand(1024 * 100)
setWritePos(pos)
设置写入起始位置
写入后坐标会自动加
0 <= pos < getSize()
无
myByte.setWritePos(0)
getWritePos()
获取当前写坐标
无
坐标值
var pos = myByte.getWritePos()
setReadPos(pos)
设置读取起始位置
读取后坐标会自动加
0 <= pos < getSize()
无
myByte.setReadPos(0)
getReadPos()
获取当前读坐标
无
坐标值
var pos = myByte.getReadPos()
writeInt(v)
写入一个整数(4字节)
v:写入值
true:写入成功
myByte.writeInt(1)
writeFloat(v)
写入一个浮点数(4字节)
v:写入值
true:写入成功
myByte.writeFloat(1.0)
writeBool(v)
写入布尔值(1字节)
v:写入值
true:写入成功
myByte.writeBool(true)
writeByte(v)
写入一个字符(1字节)
v:写入值
true:写入成功
myByte.writeByte("c")
writeString(v)
写入一个字符串
v:写入值
true:写入成功
myByte.writeString("i"m a string")
writeBytes(v,len)
写入多个字节
v:ByteArray对象
len:长度,不传写到结束
从v的ReadPos写len个字节
true:写入成功
myByte.writeBytes(v,100)
readInt()
读取整数(4字节)
无
整数
var v = myByte.readInt()
readFloat()
读取浮点数(4字节)
无
浮点数
var v = myByte.readFloat()
readBool()
读取布尔值(1字节)
无
布尔值
var v = myByte.readBool()
readByte()
读取一个字符(1字节)
无
ascii码
var v = myByte.readByte()
readString()
读取一个字符串
无
字符串
var v = myByte.readString()
readString(len)
读取指定长度的一个字符串
无
字符串
var v = myByte.readString(10)
readBytes(len)
读取多个字节
len:读取的长度
ByteArray对象
var other = myByte.readBytes(100)
getByte(pos)
读取pos对应的字节
不影响读坐标
0 <= pos < getSize()
ascii码
var v = myByte.getByte(0)
setByte(pos,v)
修改pos对应的字节
不影响写坐标
0 <= pos < getSize()
v:ascii码
true:写入成功
myByte.setByte(0,"a")
clear()
清空,读写坐标归0
无
无
myByte.clear()
copy(other,selfBegin,otherBegin,len)
把other从otherBegin的len个字节复制给自己selfBegin
other:ByteArray selfBegin:int otherBegin:int len:int
true复制成功
myByte.copy(other,10,20,50) ·高位编址(BE)与低位编址(LE)
Little-endian:将低序字节存储在起始地址
Big-endian:将高序字节存储在起始地址 function main(parm) { var myByte = new ByteArray(); myByte.writeInt(1); for(var i = 0 ; i < 4 ; i++) { print "BigEndian:" + i + " " + myByte.readByte(); } var myByte = new ByteArray(); myByte.setLittleEndian(true); myByte.writeInt(1); for(var i = 0 ; i < 4 ; i++) { print "Little:" + i + " " + myByte.readByte(); } }
结果: BigEndian:0 0 BigEndian:1 0 BigEndian:2 0 BigEndian:3 1 Little:0 1 Little:1 0 Little:2 0 Little:3 0 ·ByteArray例子function main(parm) { var myByte = new ByteArray(1024 * 10); myByte.writeInt(1); myByte.writeString("aaaa"); myByte.setReadPos(0); print myByte.readInt(); print myByte.readString(); for(var i = 0 ; i < 4 ; i++) { var b = myByte.getByte(i) ^ 0xff; myByte.setByte(i,b); } myByte.setReadPos(0); print "xor int:" + myByte.readInt(); } 1 aaaa xor int:-2
锤子将和康佳合作发布新品,罗永浩称没勇气再做手机4月15日SmartisanOS正式官宣回归,微博内容里透露了将在近期发布一款大屏设备。不少网友也猜测到应该是电视或者投影仪,没想到第二天smartisanOS官方就揭秘了。果不其
一部手机用5年?也不是不可以,目前这三款高端机符合要求一部手机用五年,这可能吗?这三款高端机给你答案。华为Mate40Pro虽然华为的这款手机是20年发布的,但是设计配置颜值,依旧吊打各大旗舰。华为Mate40Pro采用星环设计,兼被
三款低廉价位实用性强悍的手机配置解读在线下实体店中,有这么三款口碑不佳销量却很火爆的机型,形成如此之大的反差效应是什么因素呢?答案其实就在手机自身中。因此,给大家带来以下三款机型的综合性能解读,期待大家能从每一项关键
大佬竟被割韭菜!290万美元买入,转售标价4800万美元,只拍出277美元!NFT凉凉?Twitter(推特)创始人首条推文包装成NFT(非同质化代币),去年卖出了290万美元高价,然而时隔一年,现在竟然只值不到280美元。这就是跌宕起伏的NFT的世界,变幻莫测。值得
贾跃亭CEO职位被解除!造车梦或落空,曾经的1。4万订单水分太高大家对于国内知名的企业家们大都了解一二,而贾跃亭也因生意问题被大众熟知,近日,贾跃亭却因为职位问题而备受关注。不少人都知道,贾跃亭从国内离开后,去美国重新开始了他的造车梦。法拉第未
中科院第二代自研芯片诞生,成功实现性能翻倍中科院自研芯片完成自主化,成功实现性能翻倍,RISCV架构已然崛起!在整个相关限制的背景之下,中国半导体产业看似摇摇欲坠,但实则顶着巨大的压力,已经逐步找到了前进的方向,以美引导的
懒蚂蚁效应日本北海道大学的进化生物研究小组曾经做过一个实验。他们对三个分别由30只蚂蚁组成的黑蚁群进行追踪,以观察它们的分工情况。结果发现,大多数蚂蚁都很勤快,清理蚁穴搬运食物照顾幼蚁,几乎
华为2022年04月23日新消息华为华为2022年04月23日新消息余承东预热华为MateXs2手机下周正式发布华为新折叠屏旗舰机曝光28日发布外观定了!毕赣新片与华为千金姚安娜主演作品等4位华语短片入围戛纳竞赛
恭喜顺利毕业?请给被辞者体面和尊重如果说,刚兴起时的互联网黑话,给人带来一种清新与幽默之感,让人感受到互联网文化的创新与活跃,如今,随着新一轮互联网企业裁员潮的发生,有的黑话则让人一点也笑不起来。一些企业在进行裁员
台积电张忠谋赴美建厂是无奈,美国芯片制造成本太高芯片半导体1业内WiFiSoC供应紧张情况改善据IC设计公司的消息人士透露,WiFi核心芯片供应商在代工厂获得了更多可用的晶圆厂产能,因此看到供应紧张的情况有所改善。据台媒digi
同一问题的概型是唯一的吗概型(Schema)是随机现象的数学形式,它不是实际本身,而是实际的数学抽象。对于现实世界中的随机现象,要想进入数学理论的研究,首先必须确定其概型。由于我们的认识水平以及现实问题的