LUA中如何把字符串类型的“2.3102”转换为float型的2.3102?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LUA中如何把字符串类型的“2.3102”转换为float型的2.3102?相关的知识,希望对你有一定的参考价值。

LUA中如何把字符串类型的“2.3102”转换为float型的2.3102?

lua内部会自动进行转换的,甚至可以用print("99" + 1)输出100,另外更正一个小错误,变量没有类型,只有值才有类型,所以说“把字符串转换为数字型”这句话本身就有些不对 参考技术A lua没有integer和float类型之分,数值都是用number类型表示的 参考技术B local s = "2.3102"
local n = tonumber(s)追问

这样不行,我找到方法了
s+0就行

本回答被提问者采纳

如何在lua中将UTF8字节数组转换为字符串

【中文标题】如何在lua中将UTF8字节数组转换为字符串【英文标题】:How to convert UTF8 byte arrays to string in lua 【发布时间】:2013-09-12 16:47:56 【问题描述】:

我有一张这样的桌子

table = 57,55,0,15,-25,139,130,-23,173,148,-24,136,158

它是由php解包函数编码的utf8字节数组

unpack('C*',$str);

如何将其转换为 lua 中可以读取的 utf-8 字符串?

【问题讨论】:

这些数字代表什么?它们是假设是 utf-8 编码的代码点、您想要转换的实际数字文字还是什么? 它是由php解包函数编码的utf8字节数组 【参考方案1】:

Lua 没有提供将数字形式的 utf-8 字节表转换为 utf-8 字符串文字的直接函数。但是在string.char 的帮助下为此编写一些东西很容易:

function utf8_from(t)
  local bytearr = 
  for _, v in ipairs(t) do
    local utf8byte = v < 0 and (0xff + v + 1) or v
    table.insert(bytearr, string.char(utf8byte))
  end
  return table.concat(bytearr)
end

请注意,lua 的标准函数或提供的字符串工具都不支持 utf-8。如果您尝试从上述函数返回的print utf-8 编码字符串,您只会看到一些时髦的符号。如果您需要更广泛的 utf-8 支持,您需要查看 lua wiki 中提到的一些库。

【讨论】:

-1:不处理 3 字节和 4 字节 UTF8 字符,例如 U+20AC -> €【参考方案2】:

这是一个适用于 RFC 3629 限制的 UTF-8 字符集的综合解决方案:

do
  local bytemarkers =  0x7FF,192, 0xFFFF,224, 0x1FFFFF,240 
  function utf8(decimal)
    if decimal<128 then return string.char(decimal) end
    local charbytes = 
    for bytes,vals in ipairs(bytemarkers) do
      if decimal<=vals[1] then
        for b=bytes+1,2,-1 do
          local mod = decimal%64
          decimal = (decimal-mod)/64
          charbytes[b] = string.char(128+mod)
        end
        charbytes[1] = string.char(vals[2]+decimal)
        break
      end
    end
    return table.concat(charbytes)
  end
end

function utf8frompoints(...)
  local chars,arg=,...
  for i,n in ipairs(arg) do chars[i]=utf8(arg[i]) end
  return table.concat(chars)
end

print(utf8frompoints(72, 233, 108, 108, 246, 32, 8364, 8212))
--> Héllö €—

【讨论】:

我刚刚将旧实现替换为更优雅(二进制数学不使用字符串)、更短、因此也快 5 倍左右的旧实现。 额外的优化(编辑到上面)提供了另外 2 倍或更多的性能增益。 如何将这个函数与这样的字符串一起使用 s="\xD0\x9C\xD0\xBE\xD1\x81\xD0\xBA\xD0\xB2\xD0\xB0"

以上是关于LUA中如何把字符串类型的“2.3102”转换为float型的2.3102?的主要内容,如果未能解决你的问题,请参考以下文章

如何把数字型变量转换成字符串型变量

Lua 字符串转 int

如何在lua中将UTF8字节数组转换为字符串

关于JAVA的问题:如何将BufferedImage转换为Image

c语言类型转换

lua可以对单个字符和数字之间进行转换吗