如何擴展String類,並附加名爲to_bytes
的方法?如何將字符串轉換爲Ruby中的字節?
17
A
回答
21
紅寶石已經具有String#each_byte
方法,其別名爲String#bytes
。
在Ruby 1.9之前,字符串等同於字節數組,即字符被假定爲單個字節。對於ASCII文本和各種文本編碼(如Win-1252和ISO-8859-1),這很好,但在Unicode上出現了嚴重錯誤,我們在網絡上越來越頻繁地看到它。 Ruby 1.9+支持Unicode,字符串不再被認爲是由字節組成,而是由多個字節組成的字符組成。
因此,如果您試圖將文本操作爲單個字節,則需要確保您的輸入爲ASCII或至少一個基於單字節的字符集。如果您可能有多字節字符,則應使用String#each_char
或String.split(//)
或String.unpack
以及U
標誌。
是什麼//意味着
String.split(//)
//
是一樣的使用''
。要麼告訴split
返回字符。您通常也可以使用chars
。
35
String#bytes
通過字符串字節返回枚舉數。 .to_a
可以將其轉換爲數組。
"asd".bytes.to_a
=> [97, 115, 100]
0
在解壓的幫助下,我們可以將字符串轉換爲任何格式: - 字節,咬(MSB,LSB),ASCII或十六進制。請通過以下鏈接: - http://blog.bigbinary.com/2011/07/20/ruby-pack-unpack.html。將字符串轉換爲字節: -
"abcde".unpack('c*')
=> [97, 98, 99, 100, 101]
相關問題
- 1. 在Ruby中將0-F字符串轉換爲字節數組
- 2. 字節[]將字符串轉換爲字節[] - 如何操作?
- 3. 如何將字節字符串轉換爲字節[]
- 4. 將字節字符串轉換爲python中的字符串
- 5. 如何將PDF字節[]轉換爲字符串並將字符串轉換爲PDF字節[]
- 6. 將Ruby字符串轉換爲整數數組的字節?
- 7. 如何在Oracle中將字節字符串轉換爲數字?
- 8. Java - 將字節[]轉換爲字符串
- 9. 將字節轉換爲字符串
- 10. 將字節轉換爲字符串
- 11. 將字符串轉換爲字節[]
- 12. 將字符串轉換爲字節
- 13. 將字節[]轉換爲UTF8字符串
- 14. Android - 將字符串轉換爲字節[]
- 15. 將字符串轉換爲字節
- 16. 將字符串轉換爲字節
- 17. 將字符串轉換爲utf8字節
- 18. 如何將字符和字符串轉換爲字節數組?
- 19. 將字符串[]轉換爲字節[] 2個字符轉換爲字節?
- 20. 如何將UCS-2字節數組轉換爲Ruby中的UTF-8字符串?
- 21. 將字節值存儲在字符串中?將字節轉換爲字符串?
- 22. 如何將字符串轉換爲Python中的字節2
- 23. 如何將字符串中的字節轉換爲整數? Python
- 24. 如何將字節轉換爲Java中的相同字符串
- 25. 如何將字符串轉換爲iPhone中的字節sdk
- 26. 如何將字節轉換爲gdb中的字符串
- 27. 如何將字符串轉換爲字節數組中的Java
- 28. 如何將一個字符串轉換爲C#中的字節?
- 29. 如何將字節轉換爲Android USB Host中的字符串?
- 30. 如何將字符串轉換爲javascript中的字節
'「фыв」.bytes.to_a => [209,132,209,139,208,178]' - unicode字符串的字節。提問者需要字節,而不是字符。我沒有看到任何問題。或者我沒有看到什麼? – Nakilon 2010-11-05 17:20:27
是的,我說已經有'each_byte'和'bytes'方法可用,所以不需要用'to_bytes'方法擴展String。關於Unicode字符和字節:是的,您可以輕鬆地將字符轉換爲其組件字節,但不能像處理單個字符那樣操作它們,因爲某些字節不是字符值,而是指示如何修改字符。任何人如果不知道這一點,並且希望將文本當作字節處理,那麼當他們第一次遇到Unicode時,將會有很大的覺醒。 – 2010-11-05 20:19:40
'String.split(//)'中的'//'meain是什麼? – 2014-11-17 11:52:10