0

Squirrel 言語を使用する組み込みシステム用に、32 ビット浮動小数点数を 4 バイトに変換する必要があります。次のようにして、ビットシフトしてバイトを別々の部分にマスクできることを望んでいました。

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

ただし、これにより、フロートでビットシフトできないというタイプエラーが発生します。

ドキュメントで見られる他の唯一のものはtointeger関数なので、整数にキャストしてから非10進数部分を取得できますが、それでも後でバイトからフロートに逆に移動する必要があります。

何か案は?

4

1 に答える 1

0

ああ、float 値を読み込んで 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'));
于 2013-10-02T13:48:25.400 に答える