Vědět víc - vzdělávací portál pro zvídavé


Převod STR$ vs MKI$

Slide

Abychom se dostatečně vysvětlili, jaký je rozdíl mezi dvěma typy funkcí převádějícími číslo na řetězec. 

Mějme číslo 16707. Je to hodnota typu INTEGER, vejde se nám tedy do dvou bytů. V počítači bude uloženo jako dva byly s hodnotami 65 a 67. Proč zrovna takovéto hodnoty? Pokud převádíme hodnotu na byty, pracujeme vlastně v číselné soustavě se základem 256. Poslední řád (vpravo) jsou jednotky, další řád 256-ky. Hodnotu čísla uloženého v bytech tedy dostaneme jako 65*256+67=16707 

V závislosti na architektuře počítače se byty mohou ukládat v různém pořadí, v našem případě je nižší byte uložen jako první, vyšší jako druhý. 

Funkce STR$ jednoduše vypočítá hodnotu čísla (tedy 16707) a tu převede na řetězec, tedy posloupnost znaku 1,6,7,0,7 (čárky jsme doplnili, aby to v textu vypadalo lépe, BASIC je samozřejmě v řetězci vynechá, takže výsledek bude 16707). 

Funkce MKI$ však vezme oba uložené byty a každý převede na znak dle tabulky ASCII. Tyto znaky pak postupně vytiskne. Funkce MKI$ si jako základ bere číslo typu INTEGER, takže pracuje se dvěma byty. Hodnotu 16707 tak zobrazí jako znaky C a A

Podobně fungují i obrácené funkce k MKI$ (a spol), například CVI. Tato funkce vezme řetězec (pro CVI dvouznakový), každý znak převede na ASCII hodnotu a následně tyto hodnoty uloží do paměti jako byty a interpretuje je jako číslo INTEGER (vlastně hodnoty použije jako číslice v soustavě o základu 256). 

Takže CVI("CA")=16707