Tag: 二进制

如何使用Ruby将数组转换为64位双Mac绝对时间?

是否可以将存储为每个元素的二进制或hex值转换为64位双麦绝对时间? 当我使用p var_bytes控制台检查数组时,控制台显示以下输出。 \000\000\000\000\000\000\000\000\000\000\000\234\225x\266A\000\000\000\345\005\230\264 是否可以将64位双麦克风绝对时间中的上述数组元素转换为字符串? 我的代码只是一个简单的do..end puts “\nClose off the page header#{y.unpack(“n”)}\n” z.scan(/(.{8})(.{8})(.{4})(.{4})(.{4})(.{4})(.{8})(.{8})(.{8})(.*\w)/m).each do |j,k,l,m,n,o,p,q,r,s| puts “\nContent1#{j.unpack(“n”)}\n” puts “\nContent2:#{k.unpack(“n”)}\n” puts “\nContent3:#{l.unpack(“n”)}\n” puts “\nContent4:#{m.unpack(“n”)}\n” puts “\nContent5:#{n.unpack(“n”)}\n” puts “\nContent6:#{o.unpack(“n”)}\n” puts “\nContent7:#{p.unpack(“n”)}\n” expdt = Time.at((q.unpack(“L”))[0]) createdt = Time.at((r.unpack(“L”))[0]) puts “Date1:\n#{expdt}\n” puts “\nDate2:\n#{createdt}\n” puts “\nCookie:\n” puts s.split(/\0/m) end end 将这个负值转换为正数的简单方法是什么,所以Time.at不会给出错误,然后根据MAC Epoch时间转换它?

在Ruby中将字符串转换为hex

我正在尝试使用Ruby将二进制文件转换为hex。 目前我有以下内容: File.open(out_name, ‘w’) do |f| f.puts “const unsigned int modFileSize = #{data.length};” f.puts “const char modFile[] = {” first_line = true data.bytes.each_slice(15) do |a| line = a.map { |b| “,#{b}” }.join if first_line f.puts line[1..-1] else f.puts line end first_line = false end f.puts “};” end 这是以下代码生成的内容: const unsigned int modFileSize = 82946; const […]

Ruby:拆分二进制数据

我想将data拆分为8154字节的块: data = Zlib::Deflate.deflate(some_very_long_string) 最好的方法是什么? 我试着用这个: chunks = data.scan /.{1,8154}/ ……但数据丢失了! data的size为11682,但是当循环遍历每个块并总结size ,最终总大小为11677.丢失了5个字节! 为什么?

如何在Ruby中返回一个整数的固定长度二进制表示?

我知道我可以使用Fixnum#to_s将整数表示为二进制格式的字符串。 但是1.to_s(2)产生1并且我希望它产生00000001 。 如何使所有返回的字符串都填充为8个字符的零? 我可以使用类似的东西: binary = “#{‘0’ * (8 – (1.to_s(2)).size)}#{1.to_s(2)}” if (1.to_s(2)).size < 8 但这似乎并不优雅。

你如何在ruby中写一个二进制文字?

大多数语言(包含Ruby)允许在至少三个基数中编写数字文字:十进制,八进制和hex。 十进制数中的数字是通常的东西,写成(大多数)人自然写数字,96写成96 。 以零为前缀的数字通常被解释为基于八进制:96将被写为0140 。 基于hex的数字通常以0x为前缀:96将写为0x60 。 问题是:我可以在Ruby中将数字写为二进制文字吗? 怎么样?

Ruby如何处理字节/二进制文件?

我试图在套接字上发送一系列二进制字节,以满足我公司使用的特定标准。 我公司之前没有人使用Ruby,但在其他语言中,他们一次发送一个字节的数据(通常使用某种“打包”方法)。 我无论如何都无法动态创建二进制文件,或者根本创建字节(最接近我可以找到它如何将字符串转换为表示字符的字节)。 我知道你可以说: @var = 0b101010101 但是,如何将“101010101”forms的字符串转换为将string.to_i(2)生成的结果整数转换为实际二进制文件。 如果我只是通过套接字发送字符串,那么只是发送ASCII为“0”和“1”而不是文字字符? 当然有一些方法可以在Ruby中本地执行此操作吗?