CVI
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgCvi
- 最后更新: 2017-07-01
使用二进制复制将浮点数或字符串转换为整数变量
语法
vb
32位:
declare function Cvi ( byval f as single ) as integer
64位:
declare function Cvi ( byval f as double ) as integer
declare function Cvi ( byref str as const string ) as integer
declare function Cvi`<bits>` ( expr as DataType ) as integer`<bits>`用法
result = Cvi( sng )
result = Cvi( str )
result = Cvi<bits>( expr )参数
f
存储了整数变量二进制副本的浮点数。其精度(Single 或 Double)取决于当前平台上 Integer 的大小。
str
存储了整数变量二进制副本的 String。
bits
指定要返回的整数类型大小。接受的 expr 类型和大小取决于所调用的对应函数。
expr
将被复制到 Integer<bits> 中的表达式。
返回值
包含输入表达式二进制副本的 Integer 或 Integer<bits> 变量。
说明
使用浮点值或 String 中的二进制数据返回整数值。若字符串包含的字符数少于返回类型的大小,则返回零(0)。
Cvi 可用于转换由 Mki 创建的字符串。
此函数也可用于从内存或文件缓冲区转换 Integer 大小的值,而无需 Type 结构。但与使用类型结构一样,在使用 Cvi 转换从缓冲区读取的字符串时应格外小心。
Cvi 支持在参数前使用可选的 <bits> 参数。若 bits 为 16,则调用 Cvshort;若 bits 为 32,则调用 Cvl;若 bits 为 64,则调用 Cvlongint。返回类型和接受的参数类型取决于调用的函数。详见各函数的说明页。
Cvi 的行为因当前平台上 Integer 数据类型的大小而异:
- 对于 16 位
Integer(-lang qb),返回 16 位值,不接受浮点类型。 - 对于 32 位
Integer,返回 32 位值,数值参数被解释为Single精度值。 - 对于 64 位
Integer,返回 64 位值,数值参数被解释为Double精度值。
示例
vb
Dim i As Integer, s As String
s = "ABCD"
i = CVI(s)
Print Using "s = ""&"""; s
Print Using "i = _&H&"; Hex(i)方言差异
- 在 -lang qb 方言中,
Cvi期望一个 2 字节字符串,因为 QB 整数只有 16 位。即使字符串长于两个字节,也只使用前两个字节。 - 在 -lang qb 方言中,
Cvi不接受浮点参数,因为 QB 整数只有 16 位,不存在 16 位浮点数据类型。此时可使用Cvi<32>/Cvi<64>或Cvl/Cvlongint。
与 QB 的差异
- 在 QB 中,若传入的字符串长度少于两个字节,则发生错误。
- QB 不支持浮点参数。
- QB 不支持
<bits>参数。
另请参阅
MkiCvshortCvlCvlongintInteger
返回 目录