1

考虑下面的代码(一个从实际问题中总结出来的小测试用例):

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 中它输出

1
1

从它输出的命令行使用 IronRuby(32 位或 64 位)运行

1
nil

尽管如此,如果我也打印abc==abc2它会给true.

这显然是 IronRuby 中的一个错误,但它是一个死项目,因此在不久的将来修复它的希望不大。

有谁知道一种解决方法,它可以让我将 ASCII 打包回实际上表现如预期的字符串?

4

1 回答 1

1

我曾经遇到过类似的问题,不得不添加一个+''强制字符串强制。

在上面的代码中,行

b2=b.unpack('C*').pack('C*')

应该替换为

b2=b.unpack('C*').pack('C*') + ''

它会按预期工作。

于 2013-06-25T11:58:12.313 回答