Ruby on rails 是否存在将数字转换为comp-3/压缩十进制格式的现有gem或脚本?

Ruby on rails 是否存在将数字转换为comp-3/压缩十进制格式的现有gem或脚本?,ruby-on-rails,ruby,cobol,comp-3,Ruby On Rails,Ruby,Cobol,Comp 3,继续我将COBOL转换为Ruby程序的冒险,我必须将十进制数字转换为comp-3/压缩十进制格式。有谁知道一个简单的Ruby脚本或gem可以做到这一点? BernsRuby知道如何打包小文件,因此它非常简单: def pack_comp(n) s = n.abs.to_s + (n < 0 ? "d" : "c") s = "0" + s if s.size.odd? [s].pack("H*") end def包组件(n) s=n.abs.to_s+(n

继续我将COBOL转换为Ruby程序的冒险,我必须将十进制数字转换为comp-3/压缩十进制格式。有谁知道一个简单的Ruby脚本或gem可以做到这一点?
Berns

Ruby知道如何打包小文件,因此它非常简单:

def pack_comp(n)
  s = n.abs.to_s + (n < 0 ? "d" : "c")
  s = "0" + s if s.size.odd?
  [s].pack("H*")
end
def包组件(n)
s=n.abs.to_s+(n<0?“d”:“c”)
s=“0”+s如果s.size.odd?
[s] .pack(“H*”)
结束

写这篇文章大约需要5分钟……你好,马克·安德烈。你知道我在哪里可以找到算法,或者至少是算法的解释,可以帮助我理解如何度过这五分钟吗?我知道乳头(或Nybles)是相关的,一个字节可以正好有2个,这意味着我所有的数字最终都会看起来很棒我看了看,然后用一些密码回答。祝你好运。事实上,红宝石中甚至有内置的可咬包装。谁知道呢。答案更新了,没问题。不,你不是。顺便说一句,这确实花了我5分钟以上的时间:-),我的第一个解决方案也是杀伤力过大。白痴是唯一还没有意识到这一点的天才。to_s产生“小口”(4位值)?我不是Ruby专家,但它们在我看来就像字符串(8或16位值)。@Ira:事实上,
to__s
不会产生半字节,它只是转换成字符串(即进行十进制扩展)。正是
pack(“H*”)
将这些字符“转换”为半字节。嗯