代码之家  ›  专栏  ›  技术社区  ›  Chris Kooken

如何在Javascript中将Guid转换为字节数组?

  •  1
  • Chris Kooken  · 技术社区  · 16 年前

    我有一个服务总线,转换数据的唯一方法是通过JavaScript。我需要将Guid转换为字节数组,这样我就可以将其转换为ASCI85,并将其压缩为接收客户端点的20个字符的字符串。

    如有任何想法,将不胜感激。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Rubens Farias    16 年前

    试试这个(需要很多测试):

    var guid = "{12345678-90ab-cdef-fedc-ba0987654321}";
    window.alert(guid + " = " + toAscii85(guid))
    
    function toAscii85(guid)
    {
        var ascii85  = ""
        var chars    = guid.replace(/\{?(?:(\w+)-?)\}?/g, "$1");
        var patterns = ["$4$3$2$1", "$2$1$4$3", "$1$2$3$4", "$1$2$3$4"];
        for(var i=0; i < 32; i+=8)
        {
            var block = chars.substr(i, 8)
                .replace(/(..)(..)(..)(..)/, patterns[i / 8]) //poorman shift
            var decValue = parseInt(block, 16);
    
            var segment = ""
            if(decValue == 0)
            {
                segment = "z"
            }
            else
            {
                for(var n = 4; n >= 0; n--)
                {
                    segment = String.fromCharCode((decValue % 85) + 33) + segment;
                    decValue /= 85;
                }
            }
            ascii85 += segment
        }
        return "<~" + ascii85 + "~>";
    }
    
        2
  •  0
  •   sangeethkumarp    11 年前

    检查 unpasse() 节点uuid包中的方法及其示例:

    https://www.npmjs.com/package/node-uuid#uuid-unparse-buffer-offset

    推荐文章