0
私は固定オフセット0b1111を持つバイトを表す構造体を持っています。 SByteをunit8にキャストする変換演算子を定義しました。uint8をバイトを表す構造体にキャストする方法はありますか?
- (uint8からSByteへの)逆の変換はどうすればできますか?
- SByteをuint8_t、またはユニオンと置き換える唯一のソリューションはありますか?
struct SByte
{
uint8_t offset : 4;
uint8_t bit4 : 1;
uint8_t bit5 : 1;
uint8_t bit6 : 1;
uint8_t bit7 : 1;
SByte():offset(15), bit4(0), bit5(0), bit6(0), bit7(0){}
explicit operator int8_t() const
{
return static_cast<uint8_t>((bit7 << 7) | (bit6 << 6) | (bit5 << 5) | (bit4 << 4));
}
};
int main()
{
auto lbyte = SByte();
auto result = static_cast<int8_t>(lbyte);
assert(result == 15); // 0b00001111
}
'uint8_t'を受け取り、_XYのproblem_のパワーはすごいです' SByte' – Amadeus