【游戏(手游,端游等)开发】C#序列化proto后生成bytes文件,在lua层解析成proto

function Process_RunBattle:GetProto(path)
    local result = read_bytes(path)
    --字节流转换成字符串
    local str = string.char(unpack(result))
    --protobuf解析字符串
    local proto = NetStruct_BattleCommand_pb.BattleCommand()
    proto:ParseFromString(str)
    return proto
end
 
--输入path,返回字节流table
function read_bytes(path)
    local file = io.open(path, "rb")
    if not file then
        return nil
    end
    local t = {}
    repeat
        local str = file:read(4 * 1024)
        for c in (str or ''):gmatch('.') do
            if c:byte() == 126 then
 
                t = {}
            else
                table.insert(t, c:byte())
            end
        end
    until not str
    file:close()
    return t
end