当前位置:  开发笔记 > 后端 > 正文

Ruby中chr()的反义词是什么?

如何解决《Ruby中chr()的反义词是什么?》经验,为你挑选了4个好方法。

在许多语言中有一对函数,chr()并且ord(),该数字和字符值之间的转换.在某些语言中,ord()被称为asc().

Ruby有Integer#chr,效果很好:

>> 65.chr
A

很公平.但你怎么走另一条路呢?

"A".each_byte do |byte|
   puts byte
end

打印:

65

这非常接近我想要的.但我真的宁愿避免循环 - 我正在寻找一些足够短的东西,以便在声明时可读const.



1> Rob Cameron..:

如果1.9中不存在String#ord,则它在2.0中存在:

"A".ord #=> 65



2> Robert Gambl..:

在Ruby中,包括1.8系列,以下都将生成65(对于ASCII):

puts ?A
'A'[0]

Ruby 1.9中的行为发生了变化,上述两种情况都会产生"A".在Ruby 1.9中执行此操作的正确方法是:

'A'[0].ord

不幸的是,ordRuby 1.8中不存在该方法.


红宝石1.8.7中的'A'[0] .ord字样 - 并感谢答案.

3> dylanfm..:

尝试:

'A'.unpack('c')



4> Martin Dorey..:

我想+1 dylanfm和AShelly的评论,但添加[0]:

'A'.unpack('C')[0]

unpack调用返回一个包含单个整数的Array,在需要整数的地方并不总是接受它:

$ ruby -e 'printf("0x%02X\n", "A".unpack("C"))'
-e:1:in `printf': can't convert Array into Integer (TypeError)
    from -e:1
$ ruby -e 'printf("0x%02X\n", "A".unpack("C")[0])'
0x41
$ 

我正在尝试编写适用于Ruby 1.8.1,1.8.7和1.9.2的代码.

编辑传递C以大写形式解压缩,因为解压缩("c")给我-1,其中ord()给我255(尽管在C的char签名的平台上运行).

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有