为什么javascript转换它以及它将它转换为什么?

时间:2012-01-14 17:52:10

标签: javascript

我有一个字符串,'0x000000000000090D',我传递给一个函数。但是,当我尝试在函数中的警报中显示它时,它已被转换为2317.在调用函数的警报中显示它会正确显示它。

var tagid = msg[post].TagID.toString();
alert(tagid);
ShowDetails(tagid);

function ShowDetails(tagid){
alert(tagid);
}

为什么它被转换,它被转换成什么,所以我可以试着阻止它?

谢谢!

2 个答案:

答案 0 :(得分:1)

请发布您的确切代码。在某处,它被视为一个数字而不是一个字符串,你看到十六进制数字(0x90D)的十进制表示(2317)。

如果您实际上希望将其视为字符串,并且如果它在源代码中,请确保该值被引号括起来。

否则,如果这是一个变量(假设x),你可以稍微回到你所显示的十六进制格式:

x.toString(16);

但是,这不会提供所有额外的0填充,导致(仅)90d。其中一些其他解决方案(包括填充)可在How to convert decimal to hex in JavaScript?处获得。

答案 1 :(得分:1)

如果字符串实际上是字符串,则格式不应更改。您必须将其转换为某个地方的数字。

看到这个小提琴。

http://jsfiddle.net/8SYNJ/

var x = '0x000000000000090D';
var div = document.querySelector('div');
function show(str) {
    div.innerHTML = div.innerHTML + '<br/>' + typeof str + ' '  + str;   
}

show(x); // string
show(+x); // convert str to num aka decimal