number_20conversion_20in_20basic

**This is an old revision of the document!**

*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%) : REM Hexadecimal padded with spaces 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**.

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

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

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

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.1522502370.txt.gz · Last modified: 2018/03/31 13:19 by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International