2014-10-16 70 views
0

我有一个这样的数组,我需要将其编码到base64,但他们是浮动,所以我怎么能做到这一点?浮动数组到base64红宝石

part = [28.750438696879428, 26.65040665293327, 24.750377660791855, 23.750362401769962, 
     23.550359349965674, 23.65036087586759, 23.65036087586759, 23.65036087586759, 
     23.750362401769962, 24.35037155718328, 25.350386816205173] 
+2

Waht是预期产出? – falsetru 2014-10-16 16:34:57

+0

你想要这样的东西吗? ('''')]。pack('m')' – falsetru 2014-10-16 16:51:32

+0

类似的,但我发现它与'G *',很多 – user6776 2014-10-16 17:37:10

回答

1

可以为了撰写Float值的二进制字符串表示使用Array's pack method

part = [...] 

binary_representation = part.pack 'G*' 

然后可以编码表示,基地64二进制表示:

require 'base64' 
include Base64 

base64_encoded = encode64 binary_representation 

你然后可以发送编码的数据。如果您希望收到相同的数据后面,你首先要对其进行解码:

base64_decoded = decode64 base64_encoded 

然后用String's unpack method为了提取您的Float S:

floats = base64_decoded.unpack 'G*' 

G*格式指定在打包和解包时,这些元素将被解释为双精度大字节顺序的双精度Float。您可以确认数据是相同的:

parts == floats 

See it running

+0

非常感谢您的帮助!你摇滚! :d – user6776 2014-10-16 17:35:42