Ruby中字符的ASCII值

35

在Ruby 1.9中,如何获取字符的ASCII值?

我搜索了互联网,但没有成功。我尝试过?x和"x"[0],但它们都只返回"x"。


可能是在Ruby中获取ASCII字符代码-?失败的重复问题。 - Jörg W Mittag
4
我在互联网上广泛搜索,但没有成功。嗯,搜索引擎可能今天不太好。搜索引擎可能出了点问题。 - the Tin Man
3
@锡人:也许原帖作者不知道“ordinal”这个词。 - Andrew Grimm
1
@Andrew Grimm - 唉...现在我知道了自己在生活中的位置。我为别人找东西。 - the Tin Man
4个回答

58

String#ord方法可以解决这个问题:

ruby-1.9.2-p136 > 'x'.ord
 => 120 
ruby-1.9.2-p136 > '0'.ord
 => 48 
ruby-1.9.2-p136 > ' '.ord
 => 32 

16
您也可以使用

ruby-2.0.0p353 > "x".sum
=> 120

ruby-2.0.0p353 > "a string".sum
=> 792 

'sum'方法将找到所有字符代码的总和,但如果您只输入一个字符,则它将仅给出该字符的代码。


2
似乎.ord需要正确的UTF-8,但是.sum似乎不在意。 - Jonas Elfström
0.ord可以工作,返回0,即ASCII值。然而,0.sum不行,它会返回Fixnum的未定义方法。 - jasonleonhard
1
这对于Unicode字符不会给出正确的结果:"€".ord => 8364,而"€".sum => 528 - Cristik


0

我也遇到了这个问题,ord只能将字符串转换为数字,而不能反过来。解决方法是:

def getChar(a):
 return a.chr
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接