2012-10-05 103 views
0

我使用read-line來讀取一些數據,我想將它轉換爲字節數組。 babel:string-to-octet大部分都適用,除非字符\字節較大(大於200),在這種情況下它會返回兩個數字。作爲一個例子,如果字符是ú使用babel:string-to-octet返回(195 185)而不是250這正是我正在尋找的。我在babel中嘗試了一些編碼,但它們都沒有工作。在lisp中將字符串/字符轉換爲字節時遇到困難

如果我使用read-byteread-sequence它確實在250中讀取。但出於向後兼容的原因,我只剩下使用read-line,我想知道是否有什麼我丟失時使用babel:string-to-octet轉換ú250

我使用ccl 1.8 btw。

+0

當然,我問一個問題的那一刻,我找到了答案。使用ccl:encode-string-to-octets解決了我的問題。我不確定ccl和babel版本有什麼不同。也不知道是否應該刪除這個問題,因爲它已經解決了。 – WanderingPhd

+2

閱讀字符編碼,在你的情況下ISO-8859與UTF-8。 – starblue

+0

謝謝@starblue。我也嘗試了大部分編碼,但我想我沒有嘗試使用babel終於爲我工作的ISO-8859-15。 – WanderingPhd

回答

0

大多數common-lisp實現支持超過256個字符。根據鴿子的原理,這意味着你不能將所有字符轉換爲單個字節。

如果您只是想將lisp內部字符代碼0-255轉換爲字節,那麼與char-code會做你想做的事情。但是,結果將由實現定義,因爲實現不需要在內部使用任何特定編碼。