Skip to content

CVI


使用二进制复制将浮点数或字符串转换为整数变量

语法

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

存储了整数变量二进制副本的浮点数。其精度(SingleDouble)取决于当前平台上 Integer 的大小。

str

存储了整数变量二进制副本的 String

bits

指定要返回的整数类型大小。接受的 expr 类型和大小取决于所调用的对应函数。

expr

将被复制到 Integer<bits> 中的表达式。

返回值

包含输入表达式二进制副本的 IntegerInteger<bits> 变量。

说明

使用浮点值或 String 中的二进制数据返回整数值。若字符串包含的字符数少于返回类型的大小,则返回零(0)。

Cvi 可用于转换由 Mki 创建的字符串。

此函数也可用于从内存或文件缓冲区转换 Integer 大小的值,而无需 Type 结构。但与使用类型结构一样,在使用 Cvi 转换从缓冲区读取的字符串时应格外小心。

Cvi 支持在参数前使用可选的 <bits> 参数。若 bits16,则调用 Cvshort;若 bits32,则调用 Cvl;若 bits64,则调用 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> 参数。

另请参阅

  • Mki
  • Cvshort
  • Cvl
  • Cvlongint
  • Integer

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系