You are here: irt.org | FAQ | JavaScript | Text | Q631 [ previous next ]
I'm not, no :) The following was hacked together after an email from Rick Kohler:
<SCRIPT LANGUAGE="JavaScript"><!--
function makeArray() {
for (i = 0; i<makeArray.arguments.length; i++)
this[i] = makeArray.arguments[i];
}
var convert = new makeArray('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
function hex(number) {
var MSD = '' + Math.floor(number / 16), LSD = number - MSD*16;
if (MSD > 16) return hex(MSD) + convert[LSD]; else return convert[MSD] + convert[LSD];
}
function pHex(number) { return '%' + hex(number); }
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1"><!--
function hex(number) { return number.toString(16); }
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"><!--
var lookupTable = new Object();
var charCodeTable = new Object();
function buildLookupTable() {
for (var index = 0; index < 256; index++) {
lookupTable[unescape(pHex(index))] = index;
charCodeTable[unescape(pHex(index))] = index;
}
if (document.all || document.layers)
charCodeTable[unescape(pHex(0))] = NaN;
else
charCodeTable[unescape(pHex(0))] = 1/0;
charCodeTable[unescape(pHex(128))] = 8364;
charCodeTable[unescape(pHex(129))] = 65533;
charCodeTable[unescape(pHex(130))] = 8218;
charCodeTable[unescape(pHex(131))] = 402;
charCodeTable[unescape(pHex(132))] = 8222;
charCodeTable[unescape(pHex(133))] = 8230;
charCodeTable[unescape(pHex(134))] = 8224;
charCodeTable[unescape(pHex(135))] = 8225;
charCodeTable[unescape(pHex(136))] = 710;
charCodeTable[unescape(pHex(137))] = 8240;
charCodeTable[unescape(pHex(138))] = 352;
charCodeTable[unescape(pHex(139))] = 8249;
charCodeTable[unescape(pHex(140))] = 338;
charCodeTable[unescape(pHex(141))] = 65533;
charCodeTable[unescape(pHex(142))] = 381;
charCodeTable[unescape(pHex(143))] = 65533;
charCodeTable[unescape(pHex(144))] = 65533;
charCodeTable[unescape(pHex(145))] = 8216;
charCodeTable[unescape(pHex(146))] = 8217;
charCodeTable[unescape(pHex(147))] = 8220;
charCodeTable[unescape(pHex(148))] = 8221;
charCodeTable[unescape(pHex(149))] = 8226;
charCodeTable[unescape(pHex(150))] = 8211;
charCodeTable[unescape(pHex(151))] = 8212;
charCodeTable[unescape(pHex(152))] = 732;
charCodeTable[unescape(pHex(153))] = 8482;
charCodeTable[unescape(pHex(154))] = 353;
charCodeTable[unescape(pHex(155))] = 8250;
charCodeTable[unescape(pHex(156))] = 339;
charCodeTable[unescape(pHex(157))] = 65533;
charCodeTable[unescape(pHex(158))] = 382;
charCodeTable[unescape(pHex(159))] = 376;
}
buildLookupTable();
function charCode(string) {
var chr = charCodeTable[string];
if (string == '0') return chr;
else if (string == '1') return chr;
else if (string == '2') return chr;
else if (string == '3') return chr;
else if (string == '4') return chr;
else if (string == '5') return chr;
else if (string == '6') return chr;
else if (string == '7') return chr;
else if (string == '8') return chr;
else if (string == '9') return chr;
else if (chr == 48) return 'NaN';
else if (!(chr < 49) && chr <=57) return chr-48;
else return chr;
}
var output = '<TABLE BORDER="1">' +
'<TR>' +
'<TH>index<\/TH>' +
'<TH>hex(index)<\/TH>' +
'<TH>pHex(index)<\/TH>' +
'<TH>unescape(pHex(index))<\/TH>' +
'<TH>escape(unescape(pHex(index)))<\/TH>' +
'<TH>lookupTable[unescape(pHex(index))]<\/TH>' +
'<TH>charCode(unescape(pHex(index)))<\/TH>' +
(document.all || document.layers ? '<TH>unescape(pHex(index)).charCodeAt(0)<\/TH>' : '') +
'<\/TR>';
for (var index=0; index<256; index++) {
asciiCode = pHex(index);
output += '<TR>' +
'<TD>' + index + '<\/TD>' +
'<TD>' + hex(index) + '<\/TD>' +
'<TD>' + pHex(index) + '<\/TD>' +
'<TD>' + unescape(pHex(index)) + '<\/TD>' +
'<TD>' + escape(unescape(pHex(index))) + '<\/TD>' +
'<TD>' + lookupTable[unescape(pHex(index))] + '<\/TD>' +
'<TD>' + charCode(unescape(pHex(index))) + '<\/TD>' +
(document.all || document.layers ? '<TD>' + unescape(pHex(index)).charCodeAt(0) + '<\/TD>' : '') +
'<\/TR>';
}
output += '<\/TABLE>';
document.write(output);
//--></SCRIPT>