ByteBuffer之二进制数据的存取

原创 2016年08月30日 14:45:52
function LocalData:readFromBuffer( buffer )
    local v = buffer:readInt()
    if v > self.version then
        self.version = v
    end
    self.localResourceVersion = v

    self.curLanguage = buffer:readInt( )
    self.userId = buffer:readInt( )
    self.password = buffer:readUTF8( )
    self.loginWay = buffer:readUTF8( )
end

function LocalData:writeToBuffer( buffer )
    buffer:writeInt( self.version )
    buffer:writeInt( self.curLanguage )
    buffer:writeInt( self.userId )
    buffer:writeUTF8( self.password )
    buffer:writeUTF8( self.loginWay)
end

function LocalData:loadLocalData()

    local buffer = dyt.ByteBuffer:new()
    dyt.Cocos2dUtils:readBufferFromFile( buffer, self:getLocalDataPath() )

    if buffer:getBufferSize() >= 8 then
        self:init(  )
        self:readFromBuffer( buffer )
    else
        self:init(  )
    end
end

function LocalData:cleanLocalData()
    local buffer = dyt.ByteBuffer:new()
    buffer:writeInt( self.version )
    buffer:writeInt( self.curLanguage )
    buffer:writeInt( -1 )
    buffer:writeUTF8( -1 )
    dyt.Cocos2dUtils:writeBufferToFile( buffer, self:getLocalDataPath() )
end

function LocalData:saveLocalData()
    local buffer = dyt.ByteBuffer:new()

    self:writeToBuffer( buffer )
    dyt.Cocos2dUtils:writeBufferToFile( buffer, self:getLocalDataPath() )
end

function LocalData:getLocalDataPath()
    local writeDir = cc.FileUtils:getInstance():getWritablePath()
    local fullpath = writeDir .. "game.bin"
    return fullpath
end

--写入propChangeList到gamePropChange.bin
function LocalData:savePropChangeList(propChangeList)
    local buffer = dyt.ByteBuffer:new()
    self:writePropChangeList(buffer, propChangeList )
    dyt.Cocos2dUtils:writeBufferToFile( buffer, self:getLocalPropChangeDataPath() ) 
end

function LocalData:clearPropChangeList()  --清空本地PropChangeList
    local buffer = dyt.ByteBuffer:new()
    buffer:writeInt(0)
    dyt.Cocos2dUtils:writeBufferToFile( buffer, self:getLocalPropChangeDataPath() ) 
end

function LocalData:writePropChangeList(buffer, propChangeList)
    local size = #propChangeList
    buffer:writeInt(size)
    for i=1, size do
        buffer:writeInt(propChangeList[i].dictId)
        buffer:writeInt(propChangeList[i].count)
    end
end

function LocalData:getLocalPropChangeDataPath()
    local writeDir = cc.FileUtils:getInstance():getWritablePath()
    local fullpath = writeDir .. "gamePropChange.bin"
    return fullpath
end

function LocalData:readPropChangeList()
    local propChangeList = {}
    local buffer = dyt.ByteBuffer:new()
    dyt.Cocos2dUtils:readBufferFromFile( buffer, self:getLocalPropChangeDataPath() )
    if buffer:getBufferSize() >= 8 then
        local size = buffer:readInt()
        for i = 1, size do
            local dictId = buffer:readInt()
            local count = buffer:readInt()
            local propChange = PropChange:create()
            propChange.dictId = dictId
            propChange.count = count
            table.insert(propChangeList, propChange)
        end
    end
    return propChangeList
end

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

二进制数据转 基本数据类型

方法一:       如果二进制数据是有连续存放的话,那么可以使用  ByteBuffer 进行转化。 代码段如下           &#...

java中的字节缓冲区ByteBuffer

一、概述:字节缓冲区 类结构: java.lang.Object java.nio.Buffer java.nio.ByteBuffer 类声明: public abstract class By...

Java NIO笔记(四):ByteBuffer存取无符号数值

Java中并没有提供用来

数组,transferFrom,ByteBuffer数据传输对比

package cache; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExc...

手机蓝牙接收数据分段----bytebuffer可以解决

最近在写一个关于手机蓝牙接受设备发来的数据的应用,在开发工程中发现接收到的数据有的时候是分段接收的 。上网查了一下有说是因为由于干扰或者是设备的原因导致数据没有一次发完,具体原因我也是没有太细追究,我...

sqlite3的图片的(二进制数据)存取操作

sqlite3的二进制存取操作 前言上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电,图片存储挂掉),一...

C++实现string存取二进制数据的方法

本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考。具体方法分析如下: 一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存...

存取blob二进制数据出现较大偏差的一个可能的原因

工作的时候遇到了一个问题,另一个项目组将点的墨卡托坐标、索引等信息通过他们的客户端(类似于PHP中的pack()函数)装入二进制字符串,并以blob类型存入公共服务器中mysql数据库后,我在自己的电...

ue4-数据二进制存取

之前不知道ue4里面自带了那么好用的数据存取的工具,所以之前把cocos项目中的二进制存取移到ue4中 传送门。 ue4中还可以二进制数据再压缩一下,使其变得更小(不过数据文件再怎么大也大不到那里...

Unity3D PlayerPrefs 存取二进制数据

Unity PlayerPrefs 提供了字典存储接口,但没有针对二进制数据的操作。如果希望存储二进制数据bytes,就需要把bytes[]和string进行转化,然后利用PlayerPrefs存储s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)