如何在Ruby中将字符串转换为字节?
如何扩展String类,并附加名为to_bytes
的方法?
Ruby已经有一个String#each_byte
方法,该方法别名为String#bytes
。
在Ruby 1.9之前,字符串等同于字节数组,即假定字符是单个字节。 这对于ASCII文本和各种文本编码(如Win-1252和ISO-8859-1)来说都很好,但是在Unicode上却很糟糕,我们在网络上看到的越来越多。 Ruby 1.9+是Unicode识别的,字符串不再被认为是由字节组成,而是由字符组成,可以是多个字节长。
因此,如果您尝试将文本作为单个字节进行操作,则需要确保输入为ASCII,或者至少是基于单字节的字符集。 如果您可能有多字节字符,则应使用带有U
标志的String#each_char
或String.split(//)
或String.unpack
。
//在
String.split(//)
含义是什么
//
与使用''
相同。 告诉split
返回字符。 您通常也可以使用chars
。
String#bytes
通过字符串字节返回枚举器。 .to_a
可以将其转换为数组。
"asd".bytes.to_a => [97, 115, 100]
在unpack的帮助下,我们可以将字符串转换为任何格式: – 字节,咬(MSB,LSB),ASCII或hex。 请浏览此链接: – http://blog.bigbinary.com/2011/07/20/ruby-pack-unpack.html 。 要将字符串转换为字节: –
"abcde".unpack('c*') => [97, 98, 99, 100, 101]