如何将int
转换为int8_t?
cast()
/ to!int8_t()
无效。
const nblocks = l /4;
const int8_t i = to!int8_t(nblocks) * 4;
编译错误:
错误:无法隐式转换表达式(cast(int)为(nblocks)* 4) int类型为const(byte)
答案 0 :(得分:4)
int8_t
是C / C ++中对signed char
(8位,有符号整数)的typedef。此类型对应于D中的byte
,因此to!byte(nblocks)
应该有效。
答案 1 :(得分:0)
如果你想使用C&#39的标准,Phobos中的模块std.stdint
会提供正确的别名。
文档:http://dlang.org/phobos/std_stdint.html
编辑:代码中的原始问题是在最后一行乘以4。当您将byte
/ int8_t
乘以4时,该值可能不适合一个字节。如果您确定要在一个字节中包含该值,则可以使用byte
/ int8_t
使用to
检查总转化结果,或使用未检查的{{ 1}}。
cast