【德州扑克开发记录】用lua实现ntohs()和htons()

在网络传输过程中,需要把数值转换为网络可传输的类型(如字符串),这就需要用到ntohs和htons。

htons:把一个数值转换为一个(用于网络传输的)字符串。

ntohs:把一个(用于网络传输的)字符串转换为一个数值。

举例,后端要传1个包体的长度给前端,长度为6598,则会先用htons把该数字转换为字符串‘Ab’,前端收到后再用ntohs转化成数值6598。

无奈lua没有提供这样的库,只有自己写。

function getHtons(nInt, nByte)--nInt数值,nByte转换成的字节数    local szBigEndian = ‘‘    for i = 1, nByte - 1 do        local nBit = 8 * (nByte - 1)        local number = math.floor(nInt / math.pow(2, nBit))        nInt = nInt - number * nBit        szBigEndian = szBigEndian..string.char(number)    end    szBigEndian = szBigEndian..string.char(nInt)    return szBigEndianend

function getNtohs(szBigEndian)    local nTotal = 0    for i = 1, string.len(szBigEndian) do        local char = string.sub(szBigEndian, i, i)        local number = string.byte(char)        local nBit = 8 * (string.len(szBigEndian) - i)        nTotal = nTotal + number * math.pow(2, nBit)    end    return nTotalend
时间: 2024-10-16 16:18:08

【德州扑克开发记录】用lua实现ntohs()和htons()的相关文章

【德州扑克开发记录】lua提取字符串中的中英文

local tb = {}local lenInByte = #strlocal i = 1while i < (lenInByte + 1) do local curByte = string.byte(str, i) local szType local byteCount=1 if curByte>0 and curByte<=127 then if curByte>=48 and curByte<=57 then szType = 'num' elseif (curB

【德州扑克开发记录】在lua层sdk接口类继承自cocos2d类的危害

之前给外包接微信.fb.gp.appstore等,lua调用的类是这么定义的: local Platform_Appstore = class("Platform_Appstore",function() return display.newLayer()end) 咋看一下是个很普通的用法,但却制造了2个非常难以调试的bug,给后来的工作带来了莫大的痛苦. BUG1:ios真机调试,appstore支付后,乱点界面一通后,闪退,xcode报错卡在oc文件的touchbegan中. 这个

【德州扑克开发记录】ios调facebook sdk时无法打开手机上装的fb客户端

之前同事说facebook后台->setting的bundle id没有关联到打包的bundle id,可是对应了之后ios依然不能挂起客户端. 调用时lua控制台输出错误:This app is not allowed to query for scheme fbauth 在以下网址找到答案http://www.jianshu.com/p/e38a609f786e 工程->ios下有个Info.plist文件,选中并在LSApplicationQueriesSchemes一栏中把fbauth

【德州扑克开发记录】Mac quick-3.3模拟器接入protobuf

接入protobuf a.按照protobuf接入教程接好 b.xcode重编时找不到libsqlite3.dylib和libz.dylib库 解决方法如下: step 1 : Go to Build Phases > Link Binary with Libraries > + > Add other While in the file selection window press: "CMD"+Shift+G (i.e. Go to folder) and typ

java和h5 canvas德州扑克开发中(二)

德州扑克网页源码在github上分享 https://github.com/lxr1907/pokers 感兴趣的可以上去看下. 1.通讯使用websocket,主要在message.js中. 2.用canvas画界面的代码主要在view.js中. 3.游戏逻辑控制代码在controll.js中. 4.poker.min.js是github上的一个开源画扑克牌的js,在drawCards.js中进行了简单的封装. 5.music.js主要负责音效播放. 6.texasIndex.html是游戏的

德州扑克输赢判断-C#

首先讲一下思路吧. 德州扑克一把有7张牌,可能组成10种牌型,所以,在网络游戏中,不可能是两两比较,然后排序,最简单的做法就是对每个玩家的手牌计算一个权值,然后对最终玩家的权值进行排序即可得到最终的输赢顺序. 其实这个是我的毕业设计,在大三的时候,我曾在一位学长王总的带领下做过一个德州扑克的记录软件,那个软件比较简单,只是有记录员记录现实世界中正在进行的游戏,然后把玩家的牌,叫牌操作和游戏结果记录下来,以供将来重放时做教学使用.当时的项目并没有输赢判断的功能,而是由记录员自己输入输赢的玩家顺序.

2015华为德州扑克入境摘要——软体project

直到6一个月2号下午12时00,华为长达一个月的德州扑克锦标赛落下帷幕也被认为是. 我们的团队一直共同拥有3民,间.一个同学(吴)负责算法设计,一个同学(宋)负责分析消息,而我负责的实现框架设计和详细的决策算法.离5报名早年1月开始,要设置环境,设计框架,任务分工,以及各个模块代码的编写.从我个人的感觉来看,整个过程能够说是一个比較艰辛的历程. 德州扑克是一种棋牌类游戏.属于一种博弈过程,起先我对这个游戏没有不论什么的了解,最多的也仅仅是在影视题材里面见过,可是详细的游戏规则并不懂.而正是在这种

2015华为德州扑克参赛总结——软件工程

直到6月2号晚上零点,为期一个月的华为德州扑克比赛也算告一段落了.我们团队总共有3人,其中,一个同学(吴晓东)负责算法的设计,一个同学(宋振兴)负责消息的解析,而我则负责整个框架的设计以及具体决策算法的实现.从5月份初报名开始,到环境的搭建,框架的设计,任务的分工,算法的设计以及各个模块代码的编写,从我个人的感觉来看,整个过程可以说是一个比较艰辛的历程. 德州扑克是一种棋牌类游戏,属于一种博弈过程,起先我对这个游戏没有任何的了解,最多的也只是在影视题材里面见过,但是具体的游戏规则并不懂.而正是在

一场改变你投资生涯的讨论:职业德州扑克手看交易

各位投友大家好. 校长今天花时间仔细读了一篇长文,叫做<职业德州扑克手看交易:没犯任何错误照样输个精光>,非常棒的文章. 可惜不知道作者是谁,但看得出来,文中讲到的他自己在德州扑克上的经验是真实的. 这篇文章提出了两个非常有价值的概念. 第一个叫盈亏同源.有一些亏损是你在追求盈利道路上必须要支付的成本,这是不可避免也是不应该避免的.因为你一旦避免了这些亏损,你同时也就失去了盈利的机会. 而另外一些亏损择时可以避免也是应该避免的.所谓高手就是在这个部分发挥功力. 第二个概念是把风险分成了三层:系