M1任意可写块都可实现电子钱包的功能。本质其实就是按照一定的数据格式来对块值进行初始化、加值、减值。电子钱包的数据结构下图示例:
钱包结构.png
比如要将第5扇区的第0块作为电子钱包的存储位置,就要先将该块的数据格式化为上述形式。
钱包正值的意思是将10进制余额转为16进制数然后按字节逆序排列
钱包反值的意思是将钱包正值取反
地址的意思是当前的块值序号,如20块填14(10进制的20转为16进制的14)
如电子钱包余额为0,该块值数据为:00000000ffffffff0000000014eb14eb
当电子钱包余额为1时,该块值数据为:01000000feffffff0100000018e718e7
当电子钱包余额为100时,该块值数据为:640000009bffffff6400000018e718e7
余额的加值减值都要转换为10进制数然后进行计算之后再重新组装为16进制数据
电子钱包块值初始化:
/**
* 初始化块值
*
* @param blockInd