# CVI

The CVI function decodes a 2-byte STRING generated by MKI\$ (or read from a file) to INTEGER numeric values.

## Syntax

result% = CVI(stringData\$)

## Examples

Example 1:

FIELD #1, 2 AS N\$, 12 AS B\$... GET #1 'GET does not need a position or variable with successive FIELD buffer reads Y = CVI(N\$)

Explanation: Reads a field from file #1, and converts the first two bytes (N\$) into an integer number assigned to the variable Y.
Since the representation of an integer number can use up to 5 ASCII characters (five bytes), writing to a file using MKI\$ conversion, and then reading back with the CVI conversion can save up to 3 bytes of storage space.

Example 2: How CVI converts the ASCII code values created by the MKI\$ function.

SCREEN 12 DIM Q AS STRING * 1 Q = CHR\$(34) ' create Print using templates to align the values returned tmp1\$ = "1st character code = ### * 1 = ### " tmp2\$ = "2nd character code = ### * 256 = ##### " tmp3\$ = " & " tmp4\$ = " CVI Total = ##### " DO COLOR 14: LOCATE 13, 20: INPUT "Enter an Integer from 1 to 32767(0 quits): ", number% IF number% < 1 THEN EXIT DO CLS ASCII\$ = MKI\$(number%) ' create the 2 byte character string COLOR 11 _PRINTSTRING (152, 240), "MKI\$ creates 2 byte ASCII string: " + Q + ASCII\$ + Q ' displays character(s) asc1% = ASC(ASCII\$) ' find the ASCII code values of each character asc2% = ASC(ASCII\$, 2) ' QB64 allows ASC to read specific characters in a string LOCATE 18, 20: PRINT USING tmp1\$; asc1%; asc1% LOCATE 19, 20: PRINT USING tmp2\$; asc2%; asc2% * 256 LOCATE 20, 20: PRINT USING tmp3\$; "-----" LOCATE 21, 20: PRINT USING tmp4\$; asc1% + (256 * asc2%) LOOP SYSTEM

Code by Ted Weissgerber
Explanation: All ASCII characters can be displayed using _PRINTSTRING . The routine gets the ASCII code, which is the actual value needed by CVI. The first byte code is always between 0 and 255. The second byte can return 0 thru 127 and CVI multiplies that value by 256. This proves that you cannot just feed a string number value to CVI and get the result desired. ("90" gets decoded to 12345).