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

时间:2013-07-30 11:56:55

标签: javascript websocket byte guid arraybuffer

我从WebSocket连接得到arrayBuffur,我可以得到一系列字节数组 Guid是用c#创建的。

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

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

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

感谢。

2 个答案:

答案 0 :(得分:3)

除了JohanShogun的回答,一个简单的脚本可以在字节数组上使用map函数。但是,根据这个:http://msdn.microsoft.com/pl-pl/library/system.guid.tobytearray.aspx的备注部分,前四个字节应该颠倒,后两个字节和后面两个字节。所以......这是正确的解决方案(不要忘记结果值的零填充15应该是“0F”而不是“F”):

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

此处的测试示例:http://jsbin.com/ogegut/4/edit

答案 1 :(得分:0)

如果您将这些用作数字(http://www.w3schools.com/jsref/jsref_obj_number.asp),您只需执行.toString(16)即可将其设为十六进制。