2

C コード スニペットを Python に変換しようとしています。

この関数の目的は、PLC から 4 つの 8 ビットの読み取り値を取得し、それらを単一の float にデコードすることです。

float conv_float_s7_pc(char * plc_real)
{
char tmp[4];
tmp[0] = * (plc_real + 3);
tmp[1] = * (plc_real + 2);
tmp[2] = * (plc_real + 1);
tmp[3] = * (plc_real + 0);
return (* (float *) tmp) ;
}

この機能をきれいに実行できる Python マジックはありますか?

上記の関数を変換しようとしていますが、より一般的な質問は、python でこのようなメモリの「再解釈」をどのように実行しますか?

編集

これで必要なものが得られました:

import struct

def conv_to_float(plc):
    temp = struct.pack("BBBB", plc[0], plc[1], plc[2], plc[3])
    output = struct.unpack(">f", temp)[0]
    return output
4

1 に答える 1

4

フォーマット文字で構造体モジュールを使用するf

>>> import struct
>>> plc_real = "1234"
>>> struct.unpack("f", plc_real)[0]
1.6688933612840628e-07

<または>必要なエンディアンを設定するために使用することを確認してください

于 2013-07-02T01:19:19.223 に答える