首页 新闻 会员 周边 捐助

javascript字符串转整型

0
悬赏园豆:100 [已解决问题] 解决于 2012-09-30 13:14

"msg%00%00%00%00%14%9D%AE%CB%C9%03%EA%0E%F4%25i%FFq%2C%22Intest" 上面字符串unescape之后是"msg®ËÉêô%iÿq,"Intest";

其中前四个字节第4-7字节是一个整形int值20, 求如何转成int 

问题补充:

我重新描述一下:

问题相当于如下:

第4-7字节转换成10进制分别为0,0,0,20.也就是16进制的0x00,0x00,0x00,0x14,请问如何把这几位16进制拼成一个整型int值

______________________________________________________________

问题结论:

抱歉各位:洗澡的时候回顾了一下最近做的蠢事,突然想到这一桩。仔细想了一下,这里总结一下答案。

"msg%00%00%00%00%14%9D%AE%CB%C9%03%EA%0E%F4%25i%FFq%2C%22Intest"实际是一个4+4+16+4的byte数组:
a).前四个分别存放的是"msg\0"的二进制;
b).第二个4个存放的是一个4byte的整型数的二进制即0x00,0x00,0x00,0x14,实际存放的值应该是0*256*256*256+0*256*256+0*256+20*1=20;
c).第8-23(从0数起)是一个guid字段内容可以不用管他;
d).从24(从0数起)开始是一个字符串,内容是"test"。

我也理解了@没有万一 同学的意思:“javasript内部数值还是二进制之前的数值,并不需要手工转换”。

综上:转换方法应该是

var msg = unescape("msg%00%00%00%00%14%9D%AE%CB%C9%03%EA%0E%F4%25i%FFq%2C%22Intest");
var num = msg.charCodeAt(4)*256*256*256 + msg.charCodeAt(5)*256*256 + msg.charCodeAt(6)*256 + msg.charCodeAt(7);

ps:谢谢各位

麦田里的守望者的主页 麦田里的守望者 | 菜鸟二级 | 园豆:428
提问于:2012-09-29 17:33
< >
分享
最佳答案
0

它是故意转换成16进制进行传输,

---传输完后,底层会自动转换回10进制。

-------不需要你手动转换。。。

-----------------------------

收获园豆:33
没有万一 | 菜鸟二级 |园豆:235 | 2012-09-29 18:36
其他回答(2)
0

看不懂你想要表达的意思

html编码解码可以用下面的函数

function htmlEncode(value) {
    if (value) {
        return jQuery('<div />').text(value).html();
    } else {
        return '';
    }
}

function htmlDecode(value) {
    if (value) {
        return $('<div />').html(value).text();
    } else {
        return '';
    }
}

收获园豆:33
田林九村 | 园豆:2367 (老鸟四级) | 2012-09-29 17:48

感谢你的回答,我重新描述了一下问题,麻烦你帮忙解答一下

支持(0) 反对(0) 麦田里的守望者 | 园豆:428 (菜鸟二级) | 2012-09-29 17:55

@麦田里的守望者: parseInt("0x14");parseInt("0x00");

支持(0) 反对(0) 田林九村 | 园豆:2367 (老鸟四级) | 2012-09-29 18:29

@田林九村: 然后呢?我的困惑在于每一个16进制数字的权值是多少?

支持(0) 反对(0) 麦田里的守望者 | 园豆:428 (菜鸟二级) | 2012-09-29 23:12
0

第4-7字节转换成10进制分别为0,0,0,0,不是0,0,0,20,20在第8个字节

收获园豆:34
dudu | 园豆:30559 (高人七级) | 2012-09-30 12:36

老大不好意思,让你见笑了,写代码写多了数数也潜意识里从0开始了:(

支持(0) 反对(0) 麦田里的守望者 | 园豆:428 (菜鸟二级) | 2012-09-30 12:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册