![](/img/trans.png)
[英]How can i use a unsigned 64 bits variables in Bits Operations in Clojure?
[英]How can I directly work with bits in Clojure?
我前幾天開始解決https://cryptopals.com上的第一個問題。 我正在嘗試同時學習Clojure,所以我想我將在Clojure中實現所有練習。 這些練習當然是出於學習目的,但除了clojure.core和Java標准庫之外,我不會使用任何庫。 第一個練習要求您編寫代碼,該代碼接收以十六進制編碼的字符串並吐出以base64編碼的字符串。 執行此操作的算法非常簡單:
49
變為01001001
)。 我在Clojure中實際表示/處理位和字節時遇到了麻煩(對原始字節進行操作是練習的要求之一)。 我知道我可以在初始十六進制值上執行byte-array
並返回一個字節數組,但是如何訪問原始位以便我可以從一系列字節轉換為base64編碼的字符串? 任何幫助或方向將不勝感激。
始終保持瀏覽器選項卡對Clojure CheatSheet打開。
對於詳細的位工作,您需要bit-and
bit-test
等功能。
如果您只是解析十六進制字符串,請參閱基於radix選項的java.lang.BigInteger: https : //docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/ BigInteger.html#%3Cinit%3E(java.lang.String中,INT)
java.lang.Long / parse(string,radix)也很有用。
對於base64部分,您可能對tupelo.base64函數感興趣。 這個庫函數是你真正需要的將十六進制字符串轉換為base-64字符串,盡管它可能不算你的功課!
請注意,Java包含base-64函數:
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Base64.html
還要記住,通過查看Clojure和Tupelo lib的源代碼,您可以獲得想法。
而且 ,請記住,Clojure的超級權力之一是能夠在本機Java中編寫低級或性能關鍵代碼,然后將所有*.clj
和*.java
文件鏈接到一個程序中(您可以使用) Leiningen一步編譯和鏈接所有內容)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.