我很欣賞關於如何將通過HTML文本框提供的ASCII控制字符轉換爲其十六進制或二進制表示形式的建議。如何操作控制字符?
目前,我的web應用程序,採用ASCII控制字符串和轉換值,例如,如果^C
進入返回5e43
值表示「^」和「6」,而不是控制-C這在十六進制中表示爲02
。
我的想法是針對輸入運行正則表達式來檢查控制字符,例如:^[\w]{1}
,然後從預定義的表中返回與正則表達式匹配的值。
我很欣賞關於如何將通過HTML文本框提供的ASCII控制字符轉換爲其十六進制或二進制表示形式的建議。如何操作控制字符?
目前,我的web應用程序,採用ASCII控制字符串和轉換值,例如,如果^C
進入返回5e43
值表示「^」和「6」,而不是控制-C這在十六進制中表示爲02
。
我的想法是針對輸入運行正則表達式來檢查控制字符,例如:^[\w]{1}
,然後從預定義的表中返回與正則表達式匹配的值。
您可以直接從在與(. *in* read)
雖然人物如何讓你將是依賴於很多事情,最特別的是,瀏覽器很可能連你之前它們編碼爲HTTP傳輸的情況下閱讀開始。
我認爲,有那麼我想我會通過對幾個音符來處理的控制字符的所有組合是安全的終端代理:
最好的方法是編寫一個小程序,每次從鍵盤讀取一個字符,然後開始磨碎鍵盤,看看你能想出什麼。
在這裏,我將在讀取一個字符兩次,打家首次結束第二
clojure.core=> (. *in* read)
10
clojure.core=> (. *in* read)
10
所以很明顯的一個字符是不夠的,區分這兩個鍵,怎麼樣約兩個字符?
下一個例子將不會在REPL運行,因爲REPL試圖「處理」控制字符你,所以你將不得不作出一個新的項目lein new esc
添加該代碼,然後lein uberjar
和java -jar esc-1.0.0-SNAPSHOT-standalone.jar
(ns esc.core
(:gen-class))
(defn -main []
(dorun (repeatedly #(println (. *in* read)))))
運行它,打這兩個鍵產生這樣的:
^[OF
27
79
70
10 <-- this is the newline
^[OH
27 <-- esc start marker look for this
79
72
10 <-- this is the newline
這裏是ESC - 結束
^[^[OF
27
27
79
70
10
而且CTRL人物大獎得主迄今ESC - 向右箭頭
^[[1;5C
27
91
49
59
53
67
10
取大獎的六個字節。