C で、符号拡張なしsigned char
で aを anint
に変換したいと思います。したがって、が 0xFF の場合、 も 0xFF になります。int への単純なキャストは機能しません。結果は 0xFFFFFFFF になります (32 ビット マシンの場合)。signed char
int
これはうまくいくようです(そして、すでにかなり単純です):
int convert(signed char sc) {
return 0xFF & (int) sc;
}
しかし、もっと簡単で慣用的な方法はありますか?
編集:固定機能