【发布时间】:2020-12-15 14:27:43
【问题描述】:
在 C 中,要将整数的位解释为另一种类型的整数(不是强制转换整数,而是将相同的位用于不同的类型),可以这样做:
uint8_t x = 0xFF;
int8_t y = *((int8_t*) &x);
我在 Crystal 中能想到的最好的就是这个,但它非常不安全,而且 y 的寿命与 x 一样长(事实上,你不能重复使用相同的变量)。
x = 0xFF_u8
y = pointerof(x).as(Int8*).value
有没有一种惯用且安全的方式在 Crystal 中进行这种转换?我不介意复制的值。
(是的,你敢肯定我正在用 Crystal 编写模拟器!)
【问题讨论】:
标签: crystal-lang