Re: [心得] 整數轉16進位
※ 引述《othree (OOO)》之銘言:
: 剛剛一時性起找到的轉法
: var Hex = parseInt(Num.toString(), 10).toString(16);
: 你要不要也比較看看效能如何
後來檢視一下寫法
應該是用
num.toString(16);
才對
缺點是出來的16進位是小寫=x="
也有確認過opera8, ff1.0.2可以用
---
觀察時間(ms)來看
1,2方法都遠遜於11,12的方法
原來toString還可以這樣用
就算要轉換成大寫也比用1,2的方法快上一倍以上
感謝提供此方法
---
no ie o ff description
1 1797 1172 3375 .charAt暴力切割字串
2 1704 1109 3594 暴力索引查表
3 2360 1531 4516 fromCharCode + ? : 方式判斷
4 2250 1453 4516 fromCharCode暴力查表
5 1906 1219 3312 1把位元運算換成餘數運算 效果下降
6 2500 1735 4515 2加上無謂的charAt(0) 效能下降
7 2344 1516 4812 3改用if-else 效能沒差
8 3610 2359 4859 4改用fromCharCode表 效能下降
9 4297 3515 11203 6把charAt(0)拉到外面 效能下降
10 1891 1375 3344 1改用.subString
11 297 287 578 .toString(16)
12 422 487 1078 .toString(16).toUpperCase()
---
<script>
function dec2hex(num){
var str16 = "0123456789ABCDEF";
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16.charAt(tmpNum);
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex2(num){
var str16 = new Array("0","1","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16[tmpNum];
num >>= 4;
}
return str.join("");
}
function dec2hex3(num){
var str16 = new Array("0","1","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = String.fromCharCode((tmpNum>9)?(tmpNum+0x30):(tmpNum+0x37));
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex4(num){
var str16 = new Array(0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46);
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = String.fromCharCode(str16[tmpNum]);
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex5(num){
var str16 = "0123456789ABCDEF";
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num % 16;
str[i] = str16.charAt(tmpNum);
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex6(num){
var str16 = new Array("0","1","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16[tmpNum].charAt(0);
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex7(num){
var str16 = new Array("0","1","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
if(tmpNum > 9){
str[i] = String.fromCharCode(tmpNum + 0x30);
}else{
str[i] = String.fromCharCode(tmpNum + 0x37);
}
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex8(num){
var str16 = new Array(
String.fromCharCode(0x30),
String.fromCharCode(0x31),
String.fromCharCode(0x32),
String.fromCharCode(0x33),
String.fromCharCode(0x34),
String.fromCharCode(0x35),
String.fromCharCode(0x36),
String.fromCharCode(0x37),
String.fromCharCode(0x38),
String.fromCharCode(0x39),
String.fromCharCode(0x41),
String.fromCharCode(0x42),
String.fromCharCode(0x43),
String.fromCharCode(0x44),
String.fromCharCode(0x45),
String.fromCharCode(0x46));
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16[tmpNum];
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex9(num){
var str16 = new Array(
"0".charAt(0),
"1".charAt(0),
"1".charAt(0),
"2".charAt(0),
"3".charAt(0),
"4".charAt(0),
"5".charAt(0),
"6".charAt(0),
"7".charAt(0),
"8".charAt(0),
"9".charAt(0),
"A".charAt(0),
"B".charAt(0),
"C".charAt(0),
"D".charAt(0),
"E".charAt(0),
"F".charAt(0));
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16[tmpNum];
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex10(num){
var str16 = "0123456789ABCDEF";
var str = new Array;
for(var i = 0; num > 0; i++){
var tmpNum = num & 0x0F;
str[i] = str16.substring(tmpNum,tmpNum + 1);
num >>= 4;
}
return str.reverse().join("");
}
function dec2hex11(num){
return num.toString(16);
}
function dec2hex12(num){
return num.toString(16).toUpperCase();
}
function $(str){
return document.getElementById(str);
}
var dateTmp;
function t1(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex(i);
}
$("d_t1").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t2(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex2(i);
}
$("d_t2").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t3(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex3(i);
}
$("d_t3").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t4(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex4(i);
}
$("d_t4").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t5(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex5(i);
}
$("d_t5").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t6(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex6(i);
}
$("d_t6").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t7(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex7(i);
}
$("d_t7").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t8(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex8(i);
}
$("d_t8").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t9(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex9(i);
}
$("d_t9").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t10(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex10(i);
}
$("d_t10").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t11(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex11(i);
}
$("d_t11").innerHTML = (((new Date().getTime()) - dateTmp));
}
function t12(){
dateTmp = new Date().getTime();
for(var i = 0; i < 65536; i++){
dec2hex12(i);
}
$("d_t12").innerHTML = (((new Date().getTime()) - dateTmp));
}
</script>
<input type=button onclick="t1();"/><span id="d_t1"></span><br/>
<input type=button onclick="t2();"/><span id="d_t2"></span><br/>
<input type=button onclick="t3();"/><span id="d_t3"></span><br/>
<input type=button onclick="t4();"/><span id="d_t4"></span><br/>
<input type=button onclick="t5();"/><span id="d_t5"></span><br/>
<input type=button onclick="t6();"/><span id="d_t6"></span><br/>
<input type=button onclick="t7();"/><span id="d_t7"></span><br/>
<input type=button onclick="t8();"/><span id="d_t8"></span><br/>
<input type=button onclick="t9();"/><span id="d_t9"></span><br/>
<input type=button onclick="t10();"/><span id="d_t10"></span><br/>
<input type=button onclick="t11();"/><span id="d_t11"></span><br/>
<input type=button onclick="t12();"/><span id="d_t12"></span><br/>
--
▂▃◣ 個 telnet://whshs.twbbs.org P_mingray
▂▃◣▍ ▉ 人 telnet://bbs.kkcity.com.tw KKCity mingray
▋▃▊▌▆▊ 板 telnet://wretch.twbbs.org P_mingray
▊▄▋▋▅▋ 個人網站 http://pyms.fly.to/
MingRay▋◣隨意閒聊 填色工具1.1.7感謝大家的支持與愛用
◤ 1.1.8版目前測試中
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.131.243
※ 編輯: nosql 來自: 59.115.131.243 (08/10 00:12)
推
08/10 02:11, , 1F
08/10 02:11, 1F
→
08/10 02:11, , 2F
08/10 02:11, 2F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章
-1
12