亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua Table轉C# Dictionary的方法示例

2024-07-21 23:05:03
字體:
來源:轉載
供稿:網友

table特性

table是一個“關聯數組”,數組的索引可以是數字或者是字符串,所有索引值都需要用 "["和"]" 括起來;如果是字符串,還可以去掉引號和中括號; 即如果沒有[]括起,則認為是字符串索引

table 的默認初始索引一般以 1 開始,如果不寫索引,則索引就會被認為是數字,并按順序自動從1往后編;

table 的變量只是一個地址引用,對 table 的操作不會產生數據影響

table 不會固定長度大小,有新數據插入時長度會自動增長

table 里保存數據可以是任何類型,包括function和table;

table所有元素之間,總是用逗號 "," 隔開;

引言

因為在游戲公司做web后臺開發,經常會涉及到取游戲服務器的數據庫里面讀寫各種操作。

昨天下午,服務器那邊讓我讀一個配置顯示到后臺,讓運營大佬們可以在web后臺配置游戲參數。

本來以為很簡單個事情,結果我讀出那個二進制的字段,居然是這種格式

{1=0,2=0,3=0,4=2,5={},6=0,7={1=118,s010GameConfig={s008wPayType=0,s009wCostType=0,s015dwReservedRule3=3,s015dwReservedRule2=0,s006ClubId=0,s010wCostValue=0,s010wCellScore=1,s014wPlayCountRule=10,s013wHadPlayCount=0,s010dwPlayRule=0,s010wSubGameID=114,s009wMaxScore=0,s015dwReservedRule1=0,s015sPrivateTableID=0}

服務器的兄弟告訴我,這是lua/265554.html">lua/270103.html">lua的table。。。很簡單啦,就這樣。。。(此處省略幾百字)

然后我

然后我在網上搜索有么有前輩大佬留下的現成輪子。。。結果不是要加載一個lua vm的虛擬機庫就是各種麻煩還不知道能不能解決的一些方案。。。。

博主好歹也是有四年+工作經驗的人了,沒有合適的就自己寫嘛,就當鍛煉一下自己咯

新建一個項目,取了一個好聽的名字SharpluaTable

class SharpluaTable { string luatable = ""; //從{開始解析 //然后按等號分割,等號前后為一個鍵值對 //逗號之后,為另一個鍵值對 //如果遇到中途遇到{,一直解析到}為止,都為值 Dictionary<string, string> dic = new Dictionary<string, string>(); public Dictionary<string, string> Parse(string luatable) {  this.luatable = luatable;  //解析0位和最后一位,判斷是否是luatable格式  if (luatable[0] != '{')  {  throw new Exception("解析lua失敗,格式錯誤");  }  if (luatable[luatable.Length - 1] != '}')  {  throw new Exception("解析lua失敗,格式錯誤");  }  string luaKey = string.Empty, LuaValue = string.Empty;  //標示解析Key還是Value,如果true,那么解析到Key里面,如果是false,那么解析到value里面  bool iskey = true;  for (int i = 1; i < luatable.Length; i++)  {          //如果是最后一個鍵值對,那么直接就完了  if (i+1==luatable.Length&&luatable[i]=='}')  {   dic.Add(luaKey, LuaValue);   luaKey = string.Empty;   LuaValue = string.Empty;     break;  }  //如果是逗號,那么存儲當前的key value ,跳過當前字符解析  if (luatable[i] == ',')  {   dic.Add(luaKey, LuaValue);   luaKey = string.Empty;   LuaValue = string.Empty;   iskey = true; //跳過一個逗號,那么繼續解析為key   continue;  }  else  {   if (luatable[i] == '=')   {   iskey = false; //如果是等號,那么解析為key,并跳過當前   continue;   }   //如果是二級的{,那么解析到}為止,并把當前的i的值移動到}的下標位置   if (luatable[i] == '{')   {   //LuaValue += luatable[i];   int kuohaoCount = 0;   for (int j = i; j < luatable.Length; j++)   {    LuaValue += luatable[j];    if (luatable[j]=='{')    {    kuohaoCount += 1;    }    if (luatable[j]=='}')    {    kuohaoCount -= 1;    if (kuohaoCount==0)    {     i = j;     break;    }    else    {     //kuohaoCount -= 1;    }    }   }   }   else   {   if (iskey)   {    luaKey += luatable[i];   }   else   {    LuaValue += luatable[i];   }   }  }  }  return dic; }

目前前這個解析類只做了一層解析,如果value值有多層級,我默認把它解析到value里面

測試一下

string luatable = "{1=0,2=0,3=0,4=2,5={},6=0,7={1=118,s010GameConfig={s008wPayType=0,s009wCostType=0,s015dwReservedRule3=3,s015dwReservedRule2=0,s006ClubId=0,s010wCostValue=0,s010wCellScore=1,s014wPlayCountRule=10,s013wHadPlayCount=0,s010dwPlayRule=0,s010wSubGameID=114,s009wMaxScore=0,s015dwReservedRule1=0,s015sPrivateTableID=0},s006GameID=114},8=1}";   SharpluaTable lua = new SharpluaTable();   var dic = lua.Parse(luatable);   Console.WriteLine(dic["7"]);   SharpluaTable luaitem = new SharpluaTable();    var items = luaitem.Parse(dic["7"]);

lua,table,反轉,函數,字典

如果有多層級的,那就再new一個SharpLuaTable對象,再進行一次解析就好了

已經提交到Nuget上了,有需要使用大兄弟可以直接命令

Install-Package LuaTableToCSharp -Version 1.0.3

代碼提交到了github,:https://github.com/QingChengCoder/LuaTableToCSharp

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到lua頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交xxxx黑人| 北条麻妃一区二区三区中文字幕| 久久精品夜夜夜夜夜久久| 国产精品永久免费在线| 国产精品xxxxx| 91av在线看| 国产日韩欧美黄色| 欧美国产精品人人做人人爱| 91国产中文字幕| 欧美激情精品久久久久久变态| 欧美放荡办公室videos4k| 欧美黄色片视频| 欧美成人午夜视频| 国内精品久久久| 日韩中文视频免费在线观看| 欧美日本中文字幕| 欧美大胆a视频| 国产一区二区三区精品久久久| 伊人久久免费视频| 国产欧美一区二区三区在线| 57pao成人国产永久免费| 欧美激情图片区| 亚洲码在线观看| 精品国产一区二区三区久久| 日韩在线视频线视频免费网站| 亚洲精品一区中文| 国产极品精品在线观看| 久久夜精品香蕉| 日韩av一区在线| 日韩一区二区三区在线播放| 亚洲精品美女久久| 欧美三级欧美成人高清www| 91精品国产高清久久久久久久久| 成人久久18免费网站图片| 欧美久久精品午夜青青大伊人| 国产精品中文字幕在线观看| 亚洲欧美另类国产| 午夜精品一区二区三区视频免费看| 欧美激情性做爰免费视频| 久久精品中文字幕免费mv| 国产精品美女www| 日韩在线观看视频免费| 国产午夜一区二区| 久久久久这里只有精品| 最近免费中文字幕视频2019| 久久久成人的性感天堂| 日韩av在线播放资源| 欧美精品生活片| 精品亚洲aⅴ在线观看| 日韩欧美成人区| 精品女厕一区二区三区| 欧美猛交ⅹxxx乱大交视频| 中文字幕亚洲激情| 欧美国产在线视频| 久久艳片www.17c.com| 成人免费观看a| 欧美成人午夜激情在线| 欧美日韩一区二区三区| 亚洲精品国产福利| 欧美日韩在线观看视频| 欧美夫妻性视频| 欧美中文字幕视频| 亚洲人成网站999久久久综合| 亚洲精品国产综合区久久久久久久| 欧美性高潮床叫视频| 青青久久aⅴ北条麻妃| 日韩免费观看视频| 国产v综合v亚洲欧美久久| 国产欧美精品日韩| 亚洲午夜激情免费视频| 国产日韩欧美夫妻视频在线观看| 一个人看的www久久| 欧洲s码亚洲m码精品一区| 主播福利视频一区| 色噜噜狠狠狠综合曰曰曰| 亚洲成人中文字幕| 91色中文字幕| 日韩在线精品视频| 国产精品88a∨| 欧美性xxxxx| 成人a在线视频| 国产99久久精品一区二区永久免费| 国产在线观看精品一区二区三区| 久久久久久国产精品久久| 国产美女91呻吟求| 久久国产精品影视| 97在线视频精品| 91精品国产综合久久久久久久久| 国产精品白嫩美女在线观看| 亚洲天堂av女优| 欧洲成人午夜免费大片| 一本色道久久88精品综合| 欧美视频一区二区三区…| 久久在线免费观看视频| 欧美高清视频在线观看| 成人网欧美在线视频| 91精品免费视频| 欧美日韩国产丝袜另类| 欧美成人在线免费视频| 青青久久av北条麻妃黑人| 欧美激情在线狂野欧美精品| 按摩亚洲人久久| 国产成人在线视频| 亚洲精品天天看| 九色精品美女在线| 国精产品一区一区三区有限在线| 精品久久久久国产| 亚洲天堂色网站| 中文字幕国内精品| 久久99精品久久久久久青青91| 中文字幕免费精品一区高清| 色无极亚洲影院| 欧美乱妇40p| 亚洲第一在线视频| 久久亚洲春色中文字幕| 亚洲一级黄色av| 亚洲一区二区久久久| 国产精品久久久久久久一区探花| 国产精品香蕉在线观看| 亚洲日韩第一页| 亚洲精品在线视频| 久久国产视频网站| 久久99热精品这里久久精品| 日韩欧美亚洲成人| 国产精品久久久久久久久久久久久| 国产盗摄xxxx视频xxx69| 亚洲人成电影在线播放| 久久成人综合视频| 久久av红桃一区二区小说| 国产香蕉一区二区三区在线视频| 欧美成人一区二区三区电影| 久久精品国产久精国产思思| 国产精品亚洲网站| 久久人91精品久久久久久不卡| 亚洲第一偷拍网| 欧美精品免费在线观看| 日韩成人黄色av| 久久天天躁狠狠躁老女人| 97精品一区二区三区| 国产精品美女无圣光视频| 精品久久久视频| 久久精品国产精品| 欧美激情第一页xxx| 自拍偷拍亚洲精品| 亚洲人成网站色ww在线| 日韩在线视频免费观看高清中文| 亚洲精品v天堂中文字幕| 日韩激情av在线播放| 在线丨暗呦小u女国产精品| 久久中文字幕一区| 精品爽片免费看久久| 91亚洲国产精品| 欧美另类xxx| 日本三级久久久| 性色av一区二区三区红粉影视| 亚洲人成电影网| 久久精品国产v日韩v亚洲| 国产精品十八以下禁看| 欧美激情精品久久久| 久久久久久午夜| 久久精品视频免费播放| 色综合五月天导航| 国产99久久精品一区二区永久免费| 性欧美xxxx视频在线观看|