A simple cross-compiled Clojure(Script) library to handle encoding binary data in different bases using defined alphabets. If you've ever wanted a simple way to encode a byte array as a hexadecimal string, or base32, or other bases, this library is for you!
Library releases are published on Clojars. To use the latest version, add the following dependency to your project:
alphabase.bytes
namespace for generic byte-array handlingalphabase.radix
for arbitrary alphabet support=> (require '[alphabase.bytes :as b]
'[alphabase.base16 :as hex])
'[alphabase.base32 :as b32]
'[alphabase.base58 :as b58]
=> (def data (b/random-bytes 32))
=> (hex/encode data)
"333A0FC9D17E07FF9A75AFCA02DF9AB32FDB9EB71565E810E981773BDD1E0C90"
=> (b/bytes= data (hex/decode *1))
true
=> (b32/encode data)
"MZ2B7E5C7QH76NHLL6KALPZVMZP3OPLOFLF5AIOTALXHPOR4DEQ"
=> (b/bytes= data (b32/decode *1))
true
;; base32 is case-insensitive
=> (b/bytes= data (b32/decode (clojure.string/lower-case *2)))
true
=> (b58/encode data)
"4Sy9GnemD6QbtaLtVTkZsZeZXExFmvGk7dJy1gDnBJCF"
=> (b/bytes= data (b58/decode *1))
true
The unit tests can be run using the following commands:
# Clojure tests
bin/test clj
# ClojureScript tests on Node
bin/test cljs
# Babashka tests
bin/test bb
For interactive development, start a REPL:
# Clojure REPL
bin/repl
This is free and unencumbered software released into the public domain. See the UNLICENSE file for more information.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close