如果我c_int8_t
在 Fortran 中有一个变量,并且想将底层位解释为无符号整数(用于索引而不是任何算术),那么进行转换的最有效方法是什么?我想做类似的事情
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_int32_t 获取到 c_int64_t 中。