加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – 如何将数字转换为有符号/无符号16/32位?

发布时间:2020-12-14 21:43:32 所属栏目:大数据 来源:网络整理
导读:好的,所以我需要使用udp发送有符号/无符号16/32位整数.如何将Lua数转换为这些类型,以便我可以逐字节写入.我可以访问按位运算符. 我彻底搜索了这个问题,但我发现只有一个函数不能用于签名. 我甚至找不到任何材料来解释如何做到这一点,所以如果有人可以把我的
好的,所以我需要使用udp发送有符号/无符号16/32位整数.如何将Lua数转换为这些类型,以便我可以逐字节写入.我可以访问按位运算符.

我彻底搜索了这个问题,但我发现只有一个函数不能用于签名.

我甚至找不到任何材料来解释如何做到这一点,所以如果有人可以把我的东西联系起来,我会非常感激.

解决方法

如果您的Lua编号在您正在编写的类型范围内,则无需转换.您只需要提取字节并写入它们.

假设大端(网络顺序)和Lua 5.3:

local b16H = (x >> 8) & 0xff;
local b16L = (x     ) & 0xff;
my_output(string.char(b16H,b16L));

这适用于签名和未签名.

对于32位

local b32HH = (x >> 24) & 0xff;
local b32HL = (x >> 16) & 0xff;
local b32LH = (x >>  8) & 0xff;
local b32LL = (x      ) & 0xff;
my_output(string.char(b32HH,b32HL,b32LH,b32LL));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读