在javascript中将guid字节转换为字符串

在javascript中将guid字节转换为字符串,javascript,websocket,byte,guid,arraybuffer,Javascript,Websocket,Byte,Guid,Arraybuffer,我正在从WebSocket连接获取arrayBuffur,并且我可以得到字节数组的范围 在c#中创建的Guid 如何在javascript中将此guid字节转换为字符串? Guid=“FEF38A56-67A9-46DF-B7D8-C52191CD70F4” 字节=[86、138、243、254、169、103、223、70、183、216、197、33、145、205、112、244] 谢谢。如果您将这些用作数字(),只需执行.toString(16)即可将它们转换为十六进制。除了JohanS

我正在从WebSocket连接获取arrayBuffur,并且我可以得到字节数组的范围 在c#中创建的Guid

如何在javascript中将此guid字节转换为字符串?

Guid=“FEF38A56-67A9-46DF-B7D8-C52191CD70F4”

字节=[86、138、243、254、169、103、223、70、183、216、197、33、145、205、112、244]


谢谢。

如果您将这些用作数字(),只需执行.toString(16)即可将它们转换为十六进制。

除了JohanShogun answer之外,还有一个简单的脚本,可以在字节数组上使用map函数。然而,根据这篇文章的备注部分,前四个字节应该颠倒,后面两个字节应该颠倒,后面两个字节应该颠倒。所以下面是正确的解决方案(不要忘记结果值的零填充15应该是“0F”而不是“F”):


这里的测试示例:

Hmm..Bytes和guid是正确的,我刚刚验证过。为什么它会不同,有什么想法吗?首先,非常感谢你的帮助,是的,它就是一个例子。但对于另一个缺少一个符号的长度,它等于最后一个字符串中的15,但必须是16。GUID_字节=[168、199、56、91、146、52、231、64、175、133、167、15、146、60、83、107],GUID=“5B38C7A8-3492-40E7-AF85-A70F923C536B”。字节和guid是正常的,我检查过了。这是因为我没有在十六进制值中添加填充,所以字节15被转换为“F”而不是“0F”。我已经在我的答案中更新了代码。这很有帮助。在我的例子中,GUID作为原始二进制数据返回,但是您可以使用
var x=array.prototype.slice.call(binaryData)将其转换为数组然后继续执行WTK的代码。字节数组中C#GUID的精确表示
var x = [168, 199, 56, 91, 146, 52, 231, 64, 175, 133, 167, 15, 146, 60, 83, 107];

// reverse first four bytes, and join with following two reversed, joined with following two reversed, joined with rest of the bytes
x = x.slice(0, 4).reverse().concat(x.slice(4,6).reverse()).concat(x.slice(6,8).reverse()).concat(x.slice(8))

var guid = x.map(function(item) {
    // return hex value with "0" padding
    return ('00'+item.toString(16).toUpperCase()).substr(-2,2);
})

// guid variable now holds string: 5B38C7A8349240E7AF85A70F923C536B