如何在Ruby中将字符串转换为字节?

时间:2010-11-05 06:04:55

标签: ruby

如何扩展String类,并附加名为to_bytes的方法?

3 个答案:

答案 0 :(得分:38)

String#bytes通过字符串字节返回枚举器。 .to_a可以将其转换为数组。

"asd".bytes.to_a
=> [97, 115, 100]

答案 1 :(得分:25)

Ruby已经有String#each_byte方法,其别名为String#bytes

在Ruby 1.9之前,字符串等同于字节数组,即假定字符是单个字节。这适用于ASCII文本和各种文本编码,例如Win-1252ISO-8859-1,但与Unicode严重失败,我们在网络上越来越常见。 Ruby 1.9+是Unicode识别的,字符串不再被认为是由字节组成,而是由字符组成,可以是多个字节长。

因此,如果您尝试将文本作为单个字节进行操作,则需要确保输入为ASCII,或者至少是基于单字节的字符集。如果您可能有多字节字符,则应使用String#each_charString.split(//)String.unpack并使用U标记。


  

String.split(//)

中的//含义是什么

//与使用''相同。告诉split返回字符。您通常也可以使用chars

答案 2 :(得分:0)

在unpack的帮助下,我们可以将字符串转换为任何格式: - byte,bite(MSB,LSB),ASCII或hex。请通过以下链接: - http://blog.bigbinary.com/2011/07/20/ruby-pack-unpack.html。要将字符串转换为字节: -

"abcde".unpack('c*')  
=> [97, 98, 99, 100, 101]