Re: [問題] 字串轉ASCII
※ 引述《Xavier (X.avi(er))》之銘言:
: 各位好!
: 想請教一個問題,
: 假設有個字串 "012",
: 有類似 VB 的 Asc() 能一個字一個字轉成ASCII碼的方法嗎?
: 目前能將 '0'、'1'、'2'轉成 ASCII碼 48、49、50,
: ^^^^^^^^^^^^^
: 字元(char)
: 但是沒辦法把 "0" 轉成 48...
: ^^^^^
: 字串(String)
: 請各位指點迷津了,感謝!
其實這是java的問題, 而且說深可以很深 說淺可以很淺
端看"0"的編碼是什麼而定
0目前來講在UTF-8跟標準ASCII都是佔一個byte, 所以方法很簡單
雖然對byte操作我們第一個要想到的就是endian... 不過單byte不重要
for(byte b : targetString.getBytes()) {
System.out.println(b & 0xff);
}
這大概就已經是你要的了
再來說到很深的話,UCS-2的"0"是屬於multiple byte character
所以不但byte很重要 還要考慮endian...
(byte_array[0]<<8) + (byte_array[1] & 0xff) big endian
(byte_array[1]<<8) + (byte_array[0] & 0xff) little endian
當然UTF-8的multi-byte字元同樣也要考慮這玩意 這東西就留給有興趣的自己玩玩看了
這對於某些加解密來說是非常重要的概念
所以基於endian的問題,事實上我們是不太建議java引入太多不必要的byte操作
當然還是有許多需要byte操作的空間,比方說Serialization, Compress, Encrypt...
但是能用String的話 就讓java幫我們解決endian的問題就好
至於為什麼說UCS-2而不是說UTF-16,這又是更深的故事了
UTF-16有4byte的字元..... :3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.14.20.94
※ 編輯: Killercat 來自: 119.14.20.94 (06/15 06:59)
推
06/15 09:10, , 1F
06/15 09:10, 1F
→
06/15 09:10, , 2F
06/15 09:10, 2F
→
06/15 10:01, , 3F
06/15 10:01, 3F
推
06/15 10:04, , 4F
06/15 10:04, 4F
討論串 (同標題文章)