Asc
Returns the corresponding ASCII or Unicode integer representation of a character.
Syntax
`
Declare Function Asc ( ByRef str As Const String, ByVal position As Integer = 1 ) As ULong
Declare Function Asc ( ByVal str As Const ZString Ptr, ByVal position As Integer = 1 ) As ULong
Declare Function Asc ( ByVal str As Const WString Ptr, ByVal position As Integer = 1 ) As ULong
`
Usage
`
result = Asc( str [, position ] )
`
Parameters
`str`
The source string.
`position`
The position in the string of a character.
Return Value
The raw character value stored at `position` in `str`.
If both `str` and `position` can be evaluated at compile time (like `Asc("a")` or `Asc(chr(97))` or `Asc("abc", 2)` ...), the value is returned in a `UInteger` result, otherwise in a `ULong` result.
Description
If `str` is a `String` or a `ZString`, the `UByte` value at that `position` is returned. This will be a 7-bit ASCII code, or even a 8-bit character value from some code-page, depending on the string data stored in `str`.
If `str` is a `WString`, the `UShort` (Windows) or `ULong` (Linux) value at that `position` is returned. This will be a 16bit value on Windows (WStrings use UTF16 there), or a 32bit value on Linux (WStrings use UTF32 there).
The function returns zero (`0`) if the string is a zero length string, `position` is less than one (`1`), or `position` is greater than the number of characters in `str`.
`Chr` performs the opposite function for ASCII strings, while `WChr` is the opposite for Unicode strings, returning a string containing the character represented by the code passed as an argument.
Example
`
Print "the ascii code of 'a' is:"; Asc("a")
Print "the ascii code of 'b' is:"; Asc("abc", 2)
`
will produce the output:

    the ascii code of 'a' is: 97
    the ascii code of 'b' is: 98

Unicode example (Note to documentation editors: don't put inside %%(qbasic) markers or the Russian text will disappear!)

`dim a as wstring * 12 a = "Привет, мир" print "the Unicode of the second char of " & a & " is: " & asc(a, 2)`
will produce the output:

`the Unicode of the second char of Привет, мир is: 1088`

Platform Differences

- DOS does not support the wide-character string version of `Asc`.

Differences from QB

- The optional `position` argument is new to FreeBASIC.
- QB does not support the wide-character string version of `Asc`

See also

- ASCII Character Codes
- `Chr`
- `Str`
- `Val`