在js中ascii为十六进制

时间:2014-09-12 05:57:33

标签: javascript string hex substring

我正在尝试将.onion的网址(公钥信息或其他内容)转换为类似于人们使用的AACS标志的徽标。我认为这是一种分享deepweb链接的创造性方式,同时允许您验证链接的地址。

然而,当代码不起作用时,生活很糟糕。

这是现场小提琴: http://jsfiddle.net/whitingcameronlinux/th0jrx8h/4/

我需要的是一个转换,即使它们被转换为十六进制,也会保留js中的字符。我想要字符(并且parseInt toString技巧没有多大帮助)......

$("#click").click(function () {
        // Grab url (k03rjptlbsi7dq3y.onion)
        //var url = window.location.host;
        // hopefully the same kind of data
        var url = 'ko3rjptlbsi7dq3y.onion';

        // remove .onion
        var onlyurl = url.substr(0, 16);

        // turn into hex
        var hexresult = parseInt(onlyurl).toString();

        // grab hex colors
        var bar0 = "#" + hexresult.substring(0, 6);
        var bar1 = "#" + hexresult.substring(5, 6);
        var bar2 = "#" + hexresult.substring(11, 6);
        var bar3 = "#" + hexresult.substring(17, 6);
        var bar4 = "#" + hexresult.substring(23, 6);

        // remainder goes here
        var plus = "+" + hexresult.substring(29, 2);

        //new elements:
        $("#validate").append("<style id=\"validate\"> #bar0{background-color:" + $bar0 + "}#ba

r1{background-color:" + $bar1 + "}#bar2{background-color:" + $bar2 + "}#bar3{background-color:" + $bar3 + "}#bar4{background-color:" + $bar4 + "}</style>");
            $("#bar4").html($plus);
});

如何转换它们以获取正确数量的信息?

(我知道他们首先与hex不兼容,这就是为什么我必须首先将ascii转换为十六进制)

1 个答案:

答案 0 :(得分:0)

尝试这种简单而优雅的方式:

function ascii2hex(str){
  var u=unescape(encodeURIComponent(str))
  return u.split('').map(function(c){return c.charCodeAt(0).toString(16)}).join('')
}