{{fbdoc item="title" value="ASC"}}---- Returns the corresponding ASCII or Unicode integer representation of a character. {{fbdoc item="syntax"}}## [[KeyPgDeclare|declare]] [[KeyPgFunction|function]] **Asc** ( [[KeyPgByref|byref]] //str// [[KeyPgAs|as]] [[KeyPgConstQualifier|const]] [[KeyPgString|string]], [[KeyPgByval|byval]] //position// [[KeyPgAs|as]] [[KeyPgInteger|integer]] = 1 ) [[KeyPgAs|as]] [[KeyPgUlong|ulong]] [[KeyPgDeclare|declare]] [[KeyPgFunction|function]] **Asc** ( [[KeyPgByval|byval]] //str// [[KeyPgAs|as]] [[KeyPgConstQualifier|const]] [[KeyPgZstring|zstring]] [[KeyPgPtr|ptr]], [[KeyPgByval|byval]] //position// [[KeyPgAs|as]] [[KeyPgInteger|integer]] = 1 ) [[KeyPgAs|as]] [[KeyPgUlong|ulong]] [[KeyPgDeclare|declare]] [[KeyPgFunction|function]] **Asc** ( [[KeyPgByval|byval]] //str// [[KeyPgAs|as]] [[KeyPgConstQualifier|const]] [[KeyPgWstring|wstring]] [[KeyPgPtr|ptr]], [[KeyPgByval|byval]] //position// [[KeyPgAs|as]] [[KeyPgInteger|integer]] = 1 ) [[KeyPgAs|as]] [[KeyPgUlong|ulong]] ## {{fbdoc item="usage"}}## //result// = **Asc**( //str// [, //position// ] ) ## {{fbdoc item="param"}} ##//str//## The source string. ##//position//## The position in the string of a character. {{fbdoc item="ret"}} 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 ##[[KeyPgUinteger|uinteger]]## result, otherwise in a ##[[KeyPgUlong|ulong]]## result. {{fbdoc item="desc"}} If ##//str//## is a ##[[KeyPgString|String]]## or a ##[[KeyPgZstring|ZString]]##, the ##[[KeyPgUbyte|UByte]]## value at that ##//position//## is returned. This will be a 7-bit [[CptAscii|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 ##[[KeyPgWstring|WString]]##, the ##[[KeyPgUshort|UShort]]## (Windows) or ##[[KeyPgUlong|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//##. ##[[KeyPgChr|Chr]]## performs the opposite function for ASCII strings, while ##[[KeyPgWchr|WChr]]## is the opposite for Unicode strings, returning a string containing the character represented by the code passed as an argument. {{fbdoc item="ex"}} {{fbdoc item="filename" value="examples/manual/strings/asc.bas"}}%%(freebasic) 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)##<< ::c::will produce the output: <<##the Unicode of the second char of Привет, мир is: 1088##<< ::c:: {{fbdoc item="target"}} - DOS does not support the wide-character string version of ##**ASC**##. {{fbdoc item="diff"}} - The optional ##//position//## argument is new to ""FreeBASIC"". - QB does not support the wide-character string version of ##**ASC**## {{fbdoc item="see"}} - [[CptAscii|ASCII Character Codes]] - ##[[KeyPgChr|Chr]]## - ##[[KeyPgStr|Str]]## - ##[[KeyPgVal|Val]]## {{fbdoc item="back" value="CatPgString|String Functions"}}