Как я могу преобразовать Guid в байтовый массив в Javascript? - PullRequest
1 голос
/ 13 января 2010

У меня есть служебная шина, и единственный способ преобразовать данные - это JavaScript. Мне нужно преобразовать Guid в байтовый массив, чтобы затем я мог преобразовать его в Ascii85 и сжать в строку из 20 символов для конечной точки получателя клиента.

Любые мысли приветствуются.

Ответы [ 2 ]

1 голос
/ 13 января 2010

Попробуйте это (нужно много тестов):

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 голосов
/ 29 июля 2015

Проверьте метод unparse () в пакете node-uuid и его пример здесь:

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

...