大変参考になりました。
ありがとうございます。
ところで、micro:bit + BME280(wehater:bit利用)で計測したところ、氷点下になると、100℃を超えてしまいました。python3では、intの変換でunsigned intとして扱われるようです。
別途、関数などを用意して、最上位ビットがONの場合には補数計算をした方が良いかもしれません。
当方では、こういった関数で変換しました。
コードは綺麗ではありませんが、ご参考になれば。
def getSingedInt( s, mask ) :
i = int ( s , 16 ) & mask
msb = ( ( mask << 1 ) & ~mask ) >> 1
if i & msb == msb :
return int( hex( ~i & mask ), 16 ) * -1
return i
大変参考になりました。
ありがとうございます。
ところで、micro:bit + BME280(wehater:bit利用)で計測したところ、氷点下になると、100℃を超えてしまいました。python3では、intの変換でunsigned intとして扱われるようです。
別途、関数などを用意して、最上位ビットがONの場合には補数計算をした方が良いかもしれません。
当方では、こういった関数で変換しました。
コードは綺麗ではありませんが、ご参考になれば。
def getSingedInt( s, mask ) :
i = int ( s , 16 ) & mask
msb = ( ( mask << 1 ) & ~mask ) >> 1
if i & msb == msb :
return int( hex( ~i & mask ), 16 ) * -1
return i