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:
<input name="numberTxt" type="text" maxlength="512" id="numberTxt" class="numberTxt" value = '15'/> Base:
<input name="baseTxt" type="text" maxlength="512" id="baseTxt" class="baseTxt" value="16" />
<button onclick="parse();">Evaluate</button>
<div/>Result:
<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...