如何将任意数字精确转换成1632位有符号无符号二进制形式?

2026-04-01 19:331阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计310个文字,预计阅读时间需要2分钟。

如何将任意数字精确转换成16/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位

如何将任意数字精确转换成16/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));

本文共计310个文字,预计阅读时间需要2分钟。

如何将任意数字精确转换成16/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位

如何将任意数字精确转换成16/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));