我有一個簡單的問題。 正如我們所知,Char
需要兩個字節(16位),並且Byte
需要一個字節(8位)。 但是在許多編程語言中,有一個將Char
轉換爲Byte
的功能。如何將Char
轉換爲Byte
而不會丟失任何東西?如何將char轉換爲字節?
回答
在C#和java中char是一個16位的Unicode字符。在其他(較舊的?)語言(C,C++等)中,char
是ASCII字符的8位表示。在這些語言中,轉換類型並不會丟失任何東西是有意義的。
在C#中,你可以轉換char
s到兩倍多byte
S,或假設(一定真的),該char
是你們等正試圖轉換爲8個char
S(看看ASCII表)寫爲Unicode char
s。
這是不可能的。我不認爲有這樣的功能附帶任何語言。例如,Java有String.getBytes
,C#有Encoding.GetBytes
,他們得到的是byte
,而不是byte
。這種轉換就像在C中從short[]
到char[]
一樣,非常簡單,沒有操縱,只是投射,整個對象的大小(總字節數)保持不變;沒有東西丟失。
是的,我同意你的觀點,但是在SCALA中char是16bit,它必須有返回該char的8bit值的Byte函數,也許它是不關心值溢出 – RustamIS
我剛剛檢查了scala API,它的Char類有一個toByte。但我認爲它只是一個不安全的轉換,就像'int i = 42; char c =(char)i;',如果一個UTF-16字符表示一個ASCII字符,可以將它從寬字符轉換爲一個字節,因爲unicode是ASCII的超集,字符在0到127之間的值與ASCII對應的含義相同。但是,只要文本包含ASCII以外的字符,例如德國人或中國人,以這種方式鑄造會產生垃圾。 – Need4Steed
是需要4保證你是對的,這是不安全的鑄造。我也檢查過 – RustamIS
- 1. 如何將char轉換爲字節?
- 2. char轉換爲字節? (JAVA)
- 3. 將char轉換爲字節C++
- 4. 如何將字節[]轉換爲字節[]
- 5. 如何將char轉換爲字符串?
- 6. 如何將char []轉換爲字符串&
- 7. 如何將char轉換爲字符串?
- 8. 如何將float轉換爲C中的4字節char?
- 9. 如何在C++中將char *轉換爲字節*
- 10. 如何將System :: Char轉換爲C++ char
- 11. 轉換字節[]到char []
- 12. 如何將數字轉換爲字節?
- 13. 將char *轉換爲char? C++
- 14. 將C char *轉換爲.Net字符串,然後轉換爲字節[]
- 15. 將NULL字節的C字符串轉換爲char數組
- 16. 如何將位轉換爲字節?
- 17. 如何將字節轉換爲小數?
- 18. 如何將圖像轉換爲字節[]?
- 19. 如何將字節轉換爲位?
- 20. 如何將ASCII轉換爲字節?
- 21. 如何將Silverlight ImageSource轉換爲字節[]?
- 22. 如何將ref字節轉換爲byte []?
- 23. 如何將流轉換爲字節()
- 24. 如何將MultipartFile轉換爲字節流
- 25. 如何將ctypes轉換爲字節
- 26. 如何將int轉換爲字節?
- 27. 如何將字節轉換爲mb?
- 28. 如何將.gif轉換爲字節[] []?
- 29. 如何將POI HSSFWorkbook轉換爲字節?
- 30. 如何將NSString轉換爲字節
我的意思是如何將16位信息放到它的一半,到8位 – RustamIS
我得到了這個問題downvote。但在'SCALA'朗。它有'CHAR'轉換爲'BYTE'的方法,這個名字叫'toByte' – RustamIS