BBC BASIC Programmers' Reference

Site Tools

number_20conversion_20in_20basic

Number Conversion in BASIC

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).

```  REM Hexadecimal padded with zeros
DEF FNh0(A%,N%):LOCAL A\$
REPEAT A\$=STR\$~(A% AND 15)+A\$:A%=A% >>> 4:UNTIL A%=0:=RIGHT\$(STRING\$(N%,"0")+A\$,N%)
:
DEF FNh(A%,N%):LOCAL A\$
REPEAT A\$=STR\$~(A% AND 15)+A\$:A%=A% >>> 4:UNTIL A%=0:=RIGHT\$(STRING\$(N%," ")+A\$,N%)```

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

```  REM Octal padded with zeros
DEF FNo0(A%,N%):LOCAL A\$
REPEAT A\$=STR\$(A% AND 7)+A\$:A%=A% >>> 3:UNTIL A%=0:=RIGHT\$(STRING\$(N%,"0")+A\$,N%)
:
REM Octal padded with spaces
DEF FNo(A%,N%):LOCAL A\$
REPEAT A\$=STR\$(A% AND 7)+A\$:A%=A% >>> 3:UNTIL A%=0:=RIGHT\$(STRING\$(N%," ")+A\$,N%)```

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

```  REM Binary padded with zeros
DEF FNb0(A%,N%):LOCAL A\$
REPEAT A\$=STR\$(A% AND 1)+A\$:A%=A% >>> 1:UNTIL A%=0:=RIGHT\$(STRING\$(N%,"0")+A\$,N%)
:
REM Binary padded with spaces
DEF FNb(A%,N%):LOCAL A\$
REPEAT A\$=STR\$(A% AND 1)+A\$:A%=A% >>> 1:UNTIL A%=0:=RIGHT\$(STRING\$(N%," ")+A\$,N%)```

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

For converting numbers to decimal strings refer to the FNUSING library supplied with BBC BASIC for Windows and documented here.

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.

```  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 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```

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 BBC Micro Wiki.

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
number_20conversion_20in_20basic.txt · Last modified: 2018/04/17 17:51 by tbest3112