2017-02-17 63 views
0

我不敢相信我對此感到困難,但到目前爲止還沒有找到答案:假設我有一個Java char(或一個字符String ),我想將它轉換爲ASCII的byte。我該怎麼做呢?將8位ASCII字符轉換爲字節

我知道我可以查找ASCII字符的十進制值並從中創建一個字節,但它似乎應該有一個簡單的轉換。我發現了什麼似乎是答案字節數組

byte[] asciiArray = "SomeString".getBytes(StandardCharsets.US_ASCII); 

而不是隻是一個字節。喜歡的東西:

byte asciiA = <some conversion function>('A'); 
+1

你在找'(byte)'A''嗎? – Kevin

+2

Java'char'不是一個字節。它是16位Unicode,必須使用特定的外部表示進行編碼,例如UTF-8。某些「ASCII」字符將導致多個字節的輸出。 –

+0

當你指定8位時,是否真的需要包含擴展ASCII(0x80-0xFF)?如果是這樣,那麼不可能將所有字符轉換爲單個字節,因爲其中一些可能以UTF-8編碼爲2個字節,問題還不清楚。 –

回答

0

如果你確信在U + 0000到U + 007F範圍內的角色,這將是一個UTF-16代碼單元(炭),並在ASCII字符集, UTF-16代碼單元的值與ASCII代碼單元的值相同。

你可能想加一個警衛,因爲(字節)'½'不會給你任何有用的東西。

+1

其實'(字節)'½''會,但'(字節)'''不會。 0xbd將適合一個字節,但0x2153不會。 – VGR

+1

@VGR啊,是的,這將是'½'的ISO 8859-1編碼。但是,把它稱爲ASCII是無稽之談。 –