base2048 encoding for packing data into tweets!
This is an experimental module for encoding chunks of 11 bits into a single character as counted by twitter. This allows you to encode 385 (280 * 11 / 8) bytes in tweet. The api will probably remain the same but the encoding may very well change! YMV.
I've put a bit of effort into making sure all the characters used are visible to people running with standard font packages on most platforms. please open an issue with info about your device/OS if a character is not showing properly (e.g. you see a box looking thing). See base2048.txt for the ordered list of characters.
[dependencies] base2048 = "0.2"
// these 189 will never fit in a tweet encoded as hex let bytes = hex_literal::hex!("0100000001574981a3fb74e6632493fcab62947b07a6c228c2b9d840893ff1e7c4f143723c010000006a47304402201f2fc511e390f5dcecf5f0fcb627faff9c0acec671bf372c49e30b43cab048ff02200a10eefea2f2c7b1c5a1603b73dc4d3175b9a416db0acfedf9bf443c0be219c90121031132f6c2139c199a18bfe1fb7f7eb5d1daaf8d4d2e03bf11e833a13e62268fb5ffffffff01eda54e020000000017a914582e495bd15671cc7344ff54104a4d3e6468fff08700000000"); // but with base2048 you can fit it - twice! let encoded = base2048::encode(&bytes[..]); assert_eq!(encoded, "ŐØØŝقగސץແȑɯၻଥѩཛသఢшચબƌইಖၵဂȤމŘØŉਠະиǐƆԛҧဆжணལણБדڿۀ؎ӭಋހഐӣॵܡǁӏџၦݑǩƿڼݯӦસͰӟٹІɼಆମভଫదআภมǏۍโകКШΟछෂЫरഇܥۀɅఌგஏලڥҹӿϷݘঐؾЋǑবא٭٭ნЅৎ؋ۂØØƦযݩΆѮယઌȮϥǧཌǊҲқಠސၯȨØØØ"); assert_eq!(base2048::decode(&encoded), Some(bytes.to_vec()));
Decode a base2048 encoded string
Encode some bytes using base2048 encoding