💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 基本类型间的转换 语言中经常会出现类型转换。如将一个数字字符串转为整型,或浮点数。这种转换常常分为,隐式转换和显式转换。 ## 隐式转换 如果运算符支持两边不同的类型,编译器会尝试隐式转换类型,同理,赋值时也是类似。通常,隐式转换需要能保证不会丢失数据,且语义可通。如`uint8`可以转化为`uint16`,`uint256`。但`int8`不能转为`uint256`,因为`uint256`不能表示`-1`。 此外,任何无符号整数,可以转换为相同或更大大小的字节值。比如,任何可以转换为`uint160`的,也可以转换为`address`。 ## 显式转换 如果编译器不允许隐式的自动转换,但你知道转换没有问题时,可以进行强转。需要注意的是,不正确的转换会带来错误,所以你要进行谨慎的测试。 ``` pragma solidity ^0.4.0; contract DeleteExample{ uint a; function f() returns (uint){ int8 y = -3; uint x = uint(y); return x; } } ``` 如果转换为一个更小的类型,高位将被截断。 ``` uint32 a = 0x12345678; uint16 b = uint16(a); // b will be 0x5678 now ``` [http://solidity.readthedocs.io/en/develop/types.html#conversions-between-elementary-types](http://solidity.readthedocs.io/en/develop/types.html#conversions-between-elementary-types)