"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:谢谢各位
它是故意转换成16进制进行传输,
---传输完后,底层会自动转换回10进制。
-------不需要你手动转换。。。
-----------------------------
看不懂你想要表达的意思
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 '';
}
}
感谢你的回答,我重新描述了一下问题,麻烦你帮忙解答一下
@麦田里的守望者: parseInt("0x14");parseInt("0x00");
@田林九村: 然后呢?我的困惑在于每一个16进制数字的权值是多少?
第4-7字节转换成10进制分别为0,0,0,0,不是0,0,0,20,20在第8个字节
老大不好意思,让你见笑了,写代码写多了数数也潜意识里从0开始了:(