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

5
我有一个服务总线,而且唯一的转换数据的方法是通过JavaScript。我需要将Guid转换为字节数组,以便我可以将其转换为Ascii85并缩小为20个字符的字符串,以供接收客户端终点使用。
如果您有任何想法,请告诉我。

为什么必须使用JavaScript?因为它没有本地字节值。 - ChaosPandion
一个想法:“为什么JavaScript是唯一的选择?” - Bruno Reis
有点严厉,但你的观点仍然是正确的。 - ChaosPandion
无论你用JavaScript想出什么,都会很糟糕且不堪入目,几乎不值得成为一个SO答案。一个更好的问题可能是:“如何改进我的服务架构,以便更加稳健地转换数据?” - iandisme
服务总线支持的唯一脚本语言是JavaScript。它用于通过HL7发送患者信息,产品名称为MIRTH,它是开源的。 - Chris Kooken
4
讽刺者总是会讨厌。我也在寻找同样的答案,我在这里找到了它。 - Teoman shipahi
2个回答

2

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

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 + "~>";
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接