如何在Squirrel中将float转换为4个原始字节?

时间:2013-10-02 13:18:17

标签: casting embedded bit-manipulation squirrel-sql

我需要使用Squirrel语言将32位浮点数转换为4字节的嵌入式系统。我希望我可以稍微移位并将字节屏蔽成单独的部分,做类似的事情:

bytes = [
    (myfloat >> 24) & 0xff,
    (myfloat >> 16) & 0xff,
    (myfloat >>  8) & 0xff,
    (myfloat      ) & 0xff,
]

然而,这给了我一个类型错误,说你不能在浮点上移位。

我在文档中看到的唯一另一件事是tointeger函数,所以我可以转换为整数然后获取非十进制部分,但即便如此,我还需要从字节转到另一个方向稍后浮动。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

啊哈,你必须读取浮点值并将其写入blob:

local pi = 3.1415926;
bl <- blob(4);
bl.writen(pi, 'f');
bytes <- [];
foreach (byte in bl) {
    server.log(byte);
    bytes.append(byte);
}
back <- blob(4);
foreach (byte in bytes) {
    back.writen(byte, 'b');
}
back.seek(0, 'b');
server.log(back.readn('f'));