Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /www/wwwroot/www.huangyi.cc/wp-content/plugins/ueditor/main.php on line 13 橄榄枝 - 记录技术路上的点点滴滴橄榄枝 | 记录技术路上的点点滴滴
curl -X POST "https://api.weixin.qq.com/wxa/business/getuserencryptkey?access_token=ACCESS_TOKEN&openid=OPENID&signature=SIGNATURE&sig_method=hmac_sha256"
我们的游戏项目中使用了protobuf协议,但是由于协议优化了的缘故,当服务器发送字段值等于0 的时候,客户端协议解析出来后看不到这个值为0零的字段,但是如果直接用“.“去访问是可以访问的。于是问题就来了当我们数据需要更新的时候,如果在lua中 直接 for in pairs 去获得解析到的数据的键值,如果这个键的值是0 的话那么那么将会获取不到,也就是说这个时候无法判断这个字段是否是 0 ,还是根本服务器就没有发送过来。
如果服务器发送了 orgid = 10 , flag = 0 过来,那么客户端只能看到 orgid = 10 这个字段,而看不到 flag 这个。
所以在客户端中我们就做了如下处理:
--dOri 是服务发送过来经过客户端解析后的数据
function CNetCtrl.DecodeMaskData(self, dOri)
local d = {}
local lKey = {"orgid","flag"}
if lKey then
local iMask = dOri.mask --服务发送时带一个二进制的mask字段
if iMask then
local right = 1
for i=1, #lKey do
right = right * 2
if MathBit.andOp(iMask, right) ~= 0 then
local key = lKey[i]
d[key] = dOri[key]
end
end
-- table.print(d, "CNetCtrl解析mask: "..sType)
return d
end
end
return dOri
end
function MathBit.__base(left, right, op)
if left < right then
left, right = right, left
end
local res = 0
local shift = 1
while left ~= 0 do
local ra = left % 2
local rb = right % 2
res = shift * op(ra,rb) + res
shift = shift * 2
left = math.modf( left / 2) --相当于右移一位
right = math.modf( right / 2)
end
return res
end
function MathBit.andOp(left, right)
return MathBit.__base(left, right, MathBit.__andBit)
end
function MathBit.__andBit(left,right) --按位相与
return (left == 1 and right == 1) and 1 or 0
end
这样处理完成之后的数据 客户端就是可以打印出来查看了。并且可以直接使用for in pairs 去打印他们为0的值。
Windows Server 2019 数据中心版 Retail M6YP6-NDTK6-RYTWK-B7DBP-27MM4 Q8NMT-CGPMF-RM8P7-P9TYV-9BWWF T8NYB-TXP72-VPR8Y-8CP3G-FVXRR TBN72-7J3W9-973DD-YYRJ3-3PG4R
Windows Server 2019 标准版 Retail 9BFNW-KYQJ9-WB9H7-DWF83-TCR7Q
Windows Server Essentials 2019 Retail CHJNM-QHBX9-CCCBB-X3X4M-WHXTQ
Windows Server 2016 数据中心版 Retail QFC2T-36N8Q-CP7B7-PXWQ8-2G2HR
Windows Server 2012 数据中心版 Retail 8M6NW-KCPCT-HPWM4-2VGX4-X2BT9 F3NWT-RDQH9-T4DQV-4FMB4-DJXXX W9XKP-NWP8D-KX7B8-CBGWG-4M2QK PN6W6-K42CP-PPBJ3-82YFV-CYQKX 8MHNH-PHYH9-D3FJY-7MFJW-4VRG9 4TKRG-N4664-24TYQ-BH7PY-KD4G9 KVVPC-NQF3F-BCT4D-XP6T9-GJCQK 7XRDC-NBT84-88DPC-XV6KC-HH3KX JDM8B-X8NGG-JRRY6-87PWB-RCW3K