itoa(number, base)

Convert string to number

by Riham

HTML

<div>Convert an integer value to a string value
    <BR/>Assuming 16 bit integers
    <BR/>Number: the number to be converted
    <BR/>Base: the base to use in conversion, has to be between 2 and 36
    <BR/>
</div>
<BR/>
<div></div>Number:&nbsp;
<input name="numberTxt" type="text" maxlength="512" id="numberTxt" class="numberTxt"    value = '15'/>&nbsp;Base:
<input name="baseTxt" type="text" maxlength="512" id="baseTxt" class="baseTxt" value="16" />
<button onclick="parse();">Evaluate</button>
<div/>Result:&nbsp;&nbsp;&nbsp;&nbsp;
<input name="resultTxt" type="text" maxlength="512" id="resultTxt" class="resultTxt" />
<div/>
<span id="error"></span>

CSS

body {
    font-family: Helvetica, Verdana
}
p {
    padding: 7px 10px;
}
#error {
    color: red;
}

JavaScript

var ws = /^\s+$/;

function parse() {
    if (validateInputs()) {
        itoa(number, base);
    }
}

function validateInputs() {
    document.getElementById('error').innerText = '';
    var numberStr = document.getElementById('numberTxt').value;
    var baseStr = document.getElementById('baseTxt').value;

    if ((number = validateInt(numberStr)) < 0) {
        error('FAILED: Invalid Number');
        return false;
    }
    if ((base = validateInt(baseStr)) < 0) {
        error('FAILED: Invalid Base');
        return false;
    }

    //base has to be between 2-36
    if (base < 2 || base > 36) {
        error("Base must be between 2 and 36");
        return false;
    }
    return true;
}

function validateInt(str) {
    //Do not accept empty or whitespaces (Number function accepts them)
    if (str == "" || ws.test(str)) {
        error("Number cannot be empty or whitespaces");
        return -1;
    }

    var intValue = Number(str);

    //Make sure we got valid integers
    if (isNaN(intValue)) {
        error("'" + str + "' is not a valid integer");
        return -1;
    }

    //Make sure this is a valid int
    if (parseInt(str) != intValue) {
        error("'" + str + "' is not a valid integer");
        return -1;
    }

    return intValue;
}

function itoa(number, base) {
    
    var str = new Array();
    var negative = (number < 0);
    var A = 55;  //'A' = 65 in integer - 10 --> so that 10 will be converted to 55 + 10 = A 
    if (negative) {
        number *= -1;
    }

    var remainder = 0;
    var index = 0;
    while (number > 0) {
       
        remainder = number % base;
        if(remainder > 9) //for numbers with base > 10
        {
            str.unshift(String.fromCharCode(remainder + A));
        }
        else
        {
            str.unshift(remainder);
        }
        number = (number / base >> 0); //Integer devision
    }
    if (negative) {
        str.unshift('-');
    }
    setResult(str.join(''));

}

function...