考虑以下代码(从一个真正的问题中解决的一个小测试用例):
abc="ABC"
b="B"
print abc.index(b)
print "\n"
abc2=abc.unpack('C*').pack('C*')
b2=b.unpack('C*').pack('C*')
print abc2.index(b2)
print "\n"
在IdeOne中outputs
1
1
从IronRuby(32位或64位)运行它输出的命令行
1
nil
尽管如此,如果我也打印abc==abc2
,则会true
。
这显然是IronRuby中的一个错误,但它是一个死的项目,因此不太希望它会在不久的将来得到修复。
有没有人知道一种解决方法,它允许我将ASCII打包回字符串,这些字符串实际上就像人们期望的那样?
答案 0 :(得分:1)
我曾遇到类似的问题,不得不添加+''
来强制字符串强制。
在上面的代码中,行
b2=b.unpack('C*').pack('C*')
应替换为
b2=b.unpack('C*').pack('C*') + ''
它会按预期工作。