如何将int转换为int8_t?

时间:2014-07-08 04:03:33

标签: casting type-conversion d dmd

如何将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)

2 个答案:

答案 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