如果我有一个如下所示的UUID字符串:
217aad3b-0b3d-4df0-a9ee-4fc9708f40bd
如何将其打包成一个字节数组(16个字节),以便我可以通过HTTP将其作为二进制数据发送?
给定字节数组,将它解包为如上所示的字符串的函数是什么?
答案 0 :(得分:9)
您可以使用Array.pack
打包字符串:
首先,您需要将其转换为16位整数数组:
num_arr = "217aad3b-0b3d-4df0-a9ee-4fc9708f40bd".scan(/[0-9a-f]{4}/).map { |x| x.to_i(16) }
# => [8570, 44347, 2877, 19952, 43502, 20425, 28815, 16573]
然后收拾它:
packed = num_arr.pack('n*')
# => "!z\xAD;\v=M\xF0\xA9\xEEO\xC9p\x8F@\xBD"
packed.bytesize
# => 16
packed
是一个字符串,但在Ruby中,字节数组表示为字符串。