Lua:如何将 userdata 类型转换为数字 / 如何将 userdata 类型与数字进行比较

我正在尝试从文件中导入数字,并在它们达到某个值时将其更改。我使用 torch 从 gesture 获取值,并将它们从 101 更改为 10 或者从 100 更改为 9,如果输入是相应的数字(10 或 9)。不幸的是,我发现在 Lua 中,输入是 userdata 类型,不能转换为整数,也不能比较整数或 torch 张量。

所以我的问题是:如果输入类型是 userdata,我该如何检查数字的相等性?

是否有可能将输入转换为数字,以便进行比较?

gesture = matio.load(val, 'gesture')

print(type(gesture)) --打印出 `userdata`
print(gesture)       --打印出 10(例如)
if gesture == th.FloatTensor({101}) then
    gesture = th.FloatTensor({10})
    print("101 检测成功!新值为:")
    print(gesture)
    os.exit(0)
elseif gesture == th.FloatTensor({100}) then
    gesture = th.FloatTensor({9})
    print("100 检测成功!新值为:")
    print(gesture)
    os.exit(0)
end
点赞
用户6285713
用户6285713

这是一个相对复杂的问题,通过艰难的测试后,我发现一种将 userdata 数与整数比较的方法。

print(type(gesture)) -> 输出 `userdata`
print(gesture) -> 10
gesture_str = tostring(gesture)
print(type(gesture_str)) -> 输出 `string`
gesture_int = tonumber(gesture_str)
print(type(gesture_int)) -> 输出 `number`

单行解决方案如下

gesture_int = tonumber(tostring(gesture))

这个新变量将 userdata 数存储为整数。

2018-02-03 18:05:10
用户7208964
用户7208964

刚刚发现一个更容易的方法

    local gesture_int = gesture:uint()
2019-12-17 07:52:41