Re: [問題] 字串轉ASCII

看板AndroidDev作者 (殺人貓™)時間11年前 (2013/06/15 06:45), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
好深奧 QQ 我會仔細研究的~ 囧>
06/15 09:10, 1F

06/15 09:10, , 2F
感謝您的回文!
06/15 09:10, 2F

06/15 10:01, , 3F
還好吧 你要的應該就只是.getBytes() 跟b&0xff @@a
06/15 10:01, 3F

06/15 10:04, , 4F
我是指後半段~ 呵~ 有提到就會想去了解~
06/15 10:04, 4F
文章代碼(AID): #1HkvqLMt (AndroidDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1HkvqLMt (AndroidDev)