This shows you the differences between two versions of the page.
number_20conversion_20in_20basic [2018/03/31 13:19] 127.0.0.1 external edit |
number_20conversion_20in_20basic [2018/04/17 17:51] tbest3112 Added syntax highlighting |
||
---|---|---|---|
Line 3: | Line 3: | ||
//by Jonathan Harston and Richard Russell, December 2007//\\ \\ The following short functions perform conversion of unsigned 32-bit integers to fixed-length strings, in hexadecimal (base 16), octal (base 8) and binary (base 2).\\ \\ | //by Jonathan Harston and Richard Russell, December 2007//\\ \\ The following short functions perform conversion of unsigned 32-bit integers to fixed-length strings, in hexadecimal (base 16), octal (base 8) and binary (base 2).\\ \\ | ||
===== Hexadecimal Output ===== | ===== Hexadecimal Output ===== | ||
+ | <code bb4w> | ||
REM Hexadecimal padded with zeros | REM Hexadecimal padded with zeros | ||
DEF FNh0(A%,N%):LOCAL A$ | DEF FNh0(A%,N%):LOCAL A$ | ||
Line 10: | Line 11: | ||
DEF FNh(A%,N%):LOCAL A$ | DEF FNh(A%,N%):LOCAL A$ | ||
REPEAT A$=STR$~(A% AND 15)+A$:A%=A% >>> 4:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | REPEAT A$=STR$~(A% AND 15)+A$:A%=A% >>> 4:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | ||
+ | </code> | ||
**FNh0()** converts the supplied number to a fixed width hexadecimal string padded with zeros, **FNh()** converts the supplied number to a fixed width hexadecimal string padded with spaces. For example, **FNh0(10,6)** returns **00000A**.\\ \\ | **FNh0()** converts the supplied number to a fixed width hexadecimal string padded with zeros, **FNh()** converts the supplied number to a fixed width hexadecimal string padded with spaces. For example, **FNh0(10,6)** returns **00000A**.\\ \\ | ||
===== Octal Output ===== | ===== Octal Output ===== | ||
+ | <code bb4w> | ||
REM Octal padded with zeros | REM Octal padded with zeros | ||
DEF FNo0(A%,N%):LOCAL A$ | DEF FNo0(A%,N%):LOCAL A$ | ||
Line 19: | Line 22: | ||
DEF FNo(A%,N%):LOCAL A$ | DEF FNo(A%,N%):LOCAL A$ | ||
REPEAT A$=STR$(A% AND 7)+A$:A%=A% >>> 3:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | REPEAT A$=STR$(A% AND 7)+A$:A%=A% >>> 3:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | ||
+ | </code> | ||
**FNo0()** converts the supplied number to a fixed width octal string padded with zeros, **FNo()** converts the supplied number to a fixed width octal string padded with spaces. For example, **FNo0(10,6)** returns **000012**.\\ \\ | **FNo0()** converts the supplied number to a fixed width octal string padded with zeros, **FNo()** converts the supplied number to a fixed width octal string padded with spaces. For example, **FNo0(10,6)** returns **000012**.\\ \\ | ||
===== Binary Output ===== | ===== Binary Output ===== | ||
+ | <code bb4w> | ||
REM Binary padded with zeros | REM Binary padded with zeros | ||
DEF FNb0(A%,N%):LOCAL A$ | DEF FNb0(A%,N%):LOCAL A$ | ||
Line 28: | Line 33: | ||
DEF FNb(A%,N%):LOCAL A$ | DEF FNb(A%,N%):LOCAL A$ | ||
REPEAT A$=STR$(A% AND 1)+A$:A%=A% >>> 1:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | REPEAT A$=STR$(A% AND 1)+A$:A%=A% >>> 1:UNTIL A%=0:=RIGHT$(STRING$(N%," ")+A$,N%) | ||
+ | </code> | ||
**FNb0()** converts the supplied number to a fixed width binary string padded with zeros, **FNb()** converts the supplied number to a fixed width binary string padded with spaces. For example, **FNb0(10,6)** returns **001010**.\\ \\ | **FNb0()** converts the supplied number to a fixed width binary string padded with zeros, **FNb()** converts the supplied number to a fixed width binary string padded with spaces. For example, **FNb0(10,6)** returns **001010**.\\ \\ | ||
===== Decimal Output ===== | ===== Decimal Output ===== | ||
Line 33: | Line 39: | ||
===== Note ===== | ===== Note ===== | ||
These functions are deliberately written in the same style to show their similarities. Fixed-length hexadecimal and fixed-length decimal can be performed with the following shorter functions.\\ | These functions are deliberately written in the same style to show their similarities. Fixed-length hexadecimal and fixed-length decimal can be performed with the following shorter functions.\\ | ||
+ | <code bb4w> | ||
DEF FNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%) :REM Hex padded with zeros | DEF FNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%) :REM Hex padded with zeros | ||
DEF FNh(A%,N%)=RIGHT$(" "+STR$~A%,N%) :REM Hex padded with spaces | DEF FNh(A%,N%)=RIGHT$(" "+STR$~A%,N%) :REM Hex padded with spaces | ||
DEF FNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%) :REM Decimal padded with zeros | DEF FNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%) :REM Decimal padded with zeros | ||
DEF FNd(A%,N%)=RIGHT$(" "+STR$A%,N%) :REM Decimal padded with spaces | DEF FNd(A%,N%)=RIGHT$(" "+STR$A%,N%) :REM Decimal padded with spaces | ||
+ | </code> | ||
Additionally, these functions are tailored for //BBC BASIC for Windows// (and BASIC V on other platforms). They will not work on other versions of BBC BASIC. If you need code to work on other versions of BBC BASIC or need code that is version/platform neutral, see other appropriate references, such as the [[http://beebwiki.jonripley.com|BBC Micro Wiki]]. | Additionally, these functions are tailored for //BBC BASIC for Windows// (and BASIC V on other platforms). They will not work on other versions of BBC BASIC. If you need code to work on other versions of BBC BASIC or need code that is version/platform neutral, see other appropriate references, such as the [[http://beebwiki.jonripley.com|BBC Micro Wiki]]. |