Fortranにc_int8_t
変数があり、基になるビットを符号なし整数として解釈したい場合(算術ではなくインデックス付け用)、変換を行うための最も効率的な方法は何ですか?こんなことしたい
X( some_function( my_c_int8_t_var ) ) = 1
ここで、Xは配列でありsome_function
、符号なしの値を含むc_int16_tを返す必要がありmy_c_int8_t_var
ます。転送、iadd(またはキャストと加算を使用した単純な条件付き)などのオプションを見てきましたが、最も効率的な方法を知りたいです(このインデックス作成は内部ループで行われます)。もちろん、関数である必要はありません。インライン式で実行できるのであれば、それは素晴らしいことです。
編集:このアプローチが他の整数サイズでも機能する場合は便利です...つまり、c_int32_tで符号なしc_int16_tの内容を取得し、c_int64_tで符号なしc_int32_tを取得します。