{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/base91/feed/json -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/base91", "feed_url": "https://matoken.org/blog/tag/base91/feed/json", "language": "ja", "title": "basE91 – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "http://matoken.org/blog/?p=2850", "url": "https://matoken.org/blog/2020/07/31/converting-binary-to-text-with-base91-a-little-more-efficiently/", "title": "basE91\u3067\u5c11\u3057\u52b9\u7387\u3088\u304f\u30d0\u30a4\u30ca\u30ea\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db", "content_html": "
\u30d0\u30a4\u30ca\u30ea\u3092\u5229\u7528\u3067\u304d\u306a\u3044\u74b0\u5883\u3067\u306e\u30c7\u30fc\u30bf\u8ee2\u9001\u6642\u306bUNIX\u74b0\u5883\u3067\u306f\u53e4\u304f\u306f uudecode, uuencode \u304c\uff0c\u65e5\u672c\u306e\u30d1\u30bd\u30b3\u30f3\u901a\u4fe1\u3067\u306f ish \u306a\u3069\u304c\u4f7f\u308f\u308c\u3066\u3044\u307e\u3057\u305f\uff0e\u8fd1\u9803\u306f base64 \u304c\u3088\u304f\u4f7f\u308f\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u611f\u3058\u307e\u3059\uff0e
\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3067\u306f\u30d0\u30a4\u30ca\u30ea\u3092ASCII\u3067\u8868\u73fe\u3059\u308b\u305f\u3081\u30b5\u30a4\u30ba\u304c\u5927\u304d\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e\u3067\u3082\u5168\u3066\u306eASCII\u3092\u4f7f\u3063\u3066\u3044\u307e\u305b\u3093\uff0e
\n\u4eca\u56de\u898b\u3064\u3051\u305fbasE91\u306fASCII\u306e0x21-0x7E\u306e\u3046\u3061 -, \\, ' \u3092\u9664\u3044\u305f91\u6587\u5b57\u3092\u4f7f\u3063\u3066\u30c7\u30b3\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u52b9\u7387\u3088\u304f\u3059\u308b\u3082\u306e\u306e\u3088\u3046\u3067\u3059\uff0e
\u65e9\u901f\u8a66\u3057\u3066\u307f\u307e\u3059\uff0eDebian\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u306a\u3044\u304b\u306a\u3068\u63a2\u3057\u307e\u3057\u305f\u304c\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff0e
\n(\u4ee5\u524d\u8981\u671b\u3055\u308c\u305f\u3053\u3068\u306f\u3042\u308b\u3088\u3046 #706078 – RFP: base91\u2009\u2014\u2009base91 encoder/decoder – Debian Bug report logs )
\nsource\u3092\u8cb0\u3063\u3066\u304d\u3066make\u3057\u307e\u3059\uff0e
\n\u203bhash\u306f\u300c basE91 – Browse /basE91/0.6.0 at SourceForge.net \u300d\u3067\u78ba\u8a8d\u3067\u304d\u308b\uff0e
$ wget http://downloads.sourceforge.net/base91/base91-0.6.0.tar.gz\n$ md5sum base91-0.6.0.tar.gz\ne227841d900cc463a162bd79775aeb54 base91-0.6.0.tar.gz\n$ sha1sum base91-0.6.0.tar.gz\n00cfd573ec8b3d0160dbf53e2c7a49b99a1aa720 base91-0.6.0.tar.gz\n$ tar tvf base91-0.6.0.tar.gz\n-rw-r--r-- 0/0 575 2005-06-25 00:00 base91-0.6.0/AWK/README\n-rwxr-xr-x 0/0 727 2006-11-02 05:13 base91-0.6.0/AWK/b91dec.awk\n-rw-r--r-- 0/0 932 2006-09-04 03:00 base91-0.6.0/PHP4/README\n-rw-r--r-- 0/0 1513 2006-11-02 05:13 base91-0.6.0/PHP4/base91.php\n-rw-r--r-- 0/0 149 2006-09-04 03:00 base91-0.6.0/test/Makefile\n-rw-r--r-- 0/0 4265 2006-11-02 05:13 base91-0.6.0/test/test.sh\n-rw-r--r-- 0/0 332 2006-08-25 17:00 base91-0.6.0/DOS-asm/readme.txt\n-rw-r--r-- 0/0 3487 2006-11-02 05:13 base91-0.6.0/DOS-asm/b91enc.asm\n-rw-r--r-- 0/0 5034 2006-11-02 05:13 base91-0.6.0/Java/b91cli.java\n-rw-r--r-- 0/0 3297 2006-11-02 05:13 base91-0.6.0/Java/basE91.java\n-rw-r--r-- 0/0 1526 2006-11-02 05:13 base91-0.6.0/Java/license.txt\n-rw-r--r-- 0/0 793 2006-11-02 05:13 base91-0.6.0/Java/readme.txt\n-rw-r--r-- 0/0 112 2006-09-04 03:00 base91-0.6.0/Java/manifest.mf\n-rwxr-xr-x 0/0 178 2006-11-02 05:13 base91-0.6.0/Java/build_jar.sh\n-rw-r--r-- 0/0 7502 2006-11-02 05:13 base91-0.6.0/cli.c\n-rw-r--r-- 0/0 5066 2006-11-02 05:13 base91-0.6.0/base91.c\n-rw-r--r-- 0/0 1501 2006-11-02 05:13 base91-0.6.0/LICENSE\n-rw-r--r-- 0/0 561 2006-11-02 05:13 base91-0.6.0/base91.h\n-rw-r--r-- 0/0 2360 2006-11-02 05:13 base91-0.6.0/README\n-rw-r--r-- 0/0 1762 2006-11-02 05:13 base91-0.6.0/base91.1\n-rw-r--r-- 0/0 903 2006-09-04 03:00 base91-0.6.0/Makefile\n-rw-r--r-- 0/0 2330 2006-11-02 05:13 base91-0.6.0/NEWS\n$ tar xf base91-0.6.0.tar.gz\n$ cd base91-0.6.0\n$ make\n$ ./base91 -h\nUsage: base91 [OPTION]... [FILE]\nbasE91 encode or decode FILE, or standard input, to standard output.\n\n -d, --decode decode data\n -m SIZE use SIZE bytes of memory for buffers (suffixes b, K, M)\n -o, --output=FILE write to FILE instead of standard output\n -v, --verbose verbose mode\n -w, --wrap=COLS wrap encoded lines after COLS characters (default 76)\n --help display this help and exit\n --version output version information and exit\n\nWith no FILE, or when FILE is -, read standard input.\nencode\u3057\u3066decode\u3057\u3066\u307f\u307e\u3059\uff0e
\n\u5f53\u305f\u308a\u524d\u3067\u3059\u304c\uff0cencode, decode\u3057\u3066\u3082diff\u3082hash\u3082\u540c\u3058\u3067\u3059\uff0e
$ ./base91 ./base91 -o ./base91.base91\n$ ./base91 -d ./base91.base91 -o ./base91.tmp\n$ diff ./base91 ./base91.tmp\n$ sha512sum ./base91\nbc903be7c5b694841a9d0303351846f80f4798ad8848e8f298cf2c4818c68a2270b065db495b969503b25cdf672632e1cced18094f935fed47b75718c3c3e976 ./base91\n$ ./base91 ./base91 | ./base91 -d | sha512sum\nbc903be7c5b694841a9d0303351846f80f4798ad8848e8f298cf2c4818c68a2270b065db495b969503b25cdf672632e1cced18094f935fed47b75718c3c3e976 -\nbasE91, base64, base32, uudecode \u3067\u5909\u63db\u3057\u3066\u307f\u307e\u3059\uff0e
\nbasE91 \u304c\u4e00\u756a\u5c0f\u3055\u3044\u3067\u3059\u306d
$ ls --block-size=1 -s ./base91\n16384 ./base91\n$ ./base91 ./base91 | wc -c\n17340\n$ base64 ./base91 | wc -c\n19615\n$ uuencode ./base91 - | wc -c\n20024\n$ base32 ./base91 | wc -c\n23538\n\u5727\u7e2e\u3059\u308b\u3068\u5927\u5206\u5c0f\u3055\u304f\u306a\u308a\u307e\u3059\uff0e\u5727\u7e2e\u306e\u307b\u3046\u304c\u305a\u3063\u3068\u52b9\u304d\u307e\u3059\u306d\uff0e
\n$ xz -c ./base91 | wc -c\n4528\n$ xz -c ./base91 | ./base91 | wc -c\n5640\n$ xz -c ./base91 | base64 | wc -c\n6120\n$ xz -c ./base91 | uuencode - | wc -c\n6260\n$ xz -c ./base91 | base32 | wc -c\n7344\n\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u3082\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e/usr/bin \u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u9069\u5f53\u306b\u898b\u7e55\u3063\u3066\u6bd4\u8f03x5\u3067\u3059\uff0e
#!/bin/bash\n\nXZ=`mktemp`\nfor i in `seq 1 5`\ndo\n CMD=`find /usr/bin -type f | shuf -n 1`\n echo $CMD\n echo -n \"raw \"\n stat -c %s $CMD\n xz -9 -c $CMD > $XZ\n echo -n \"xz \"\n stat -c %s $XZ\n echo -n \"xz.uu \"\n uuencode $XZ - | wc -c\n echo -n \"xz.base64 \"\n base64 $XZ | wc -c\n echo -n \"xz.base91 \"\n base91 $XZ | wc -c\ndone\nrm $XZ\n$ bash ./bin2ascii.bash | column -t\n/usr/bin/lxc-snapshot\nraw 27632\nxz 6756\nxz.uu 9328\nxz.base64 9127\nxz.base91 8418\n/usr/bin/dh_installtmpfiles\nraw 3263\nxz 1540\nxz.uu 2144\nxz.base64 2084\nxz.base91 1917\n/usr/bin/pbmtogo\nraw 10384\nxz 3164\nxz.uu 4380\nxz.base64 4276\nxz.base91 3942\n/usr/bin/chartread\nraw 3966528\nxz 772956\nxz.uu 1064980\nxz.base64 1044169\nxz.base91 963047\n/usr/bin/spamassassin\nraw 29898\nxz 9608\nxz.uu 13258\nxz.base64 12981\nxz.base91 11971\n\u304a\u307e\u3051?armel\u3067static link\u306a\u30d0\u30a4\u30ca\u30ea\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\uff0eSipeed Lichee Nano \u3067\u52d5\u304b\u306a\u3044\u304b\u306a?\u3068\uff0e
\n$ git diff HEAD~~ Makefile\ndiff --git a/Makefile b/Makefile\nindex 246aede..129acff 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1,7 +1,7 @@\n-CFLAGS = -Wall -W -O2\n-LDFLAGS = -s\n+CFLAGS = -static -Wall -W -O2\n+LDFLAGS = -static -s\n\n-CC = gcc\n+CC = arm-linux-gnueabi-gcc\n INSTALL = install\n INSTALL_DATA = $(INSTALL) -m 444\n INSTALL_PROGRAM = $(INSTALL) -m 555\nqemu-arm-static \u3067\u306f\u52d5\u304f\u306e\u3092\u78ba\u8a8d\u3057\u305f\u3051\u3069\u5b9f\u6a5f\u3067\u306f\u672a\u78ba\u8a8d\u3067\u3059\uff0e
$ file ./base91\n./base91: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, BuildID[sha1]=88ec4ccbf69c4bb41640b5de63b6b5373b7e5365, for GNU/Linux 3.2.0, stripped\n$ ldd ./base91\n not a dynamic executable\n$ echo 😺 | qemu-arm-static ./base91 | pee cat \"qemu-arm-static ./base91 -d\"\n=~m6xHA\n😺\n\u4ee5\u4e0b\u306b\u30d0\u30a4\u30ca\u30ea\u3068uuencode\u3057\u305f\u3082\u306e\u304c\u7f6e\u3044\u3066\u3042\u308a\u307e\u3059\uff0e
\nblog\u5143\u306ememo
\n$ dpkg-query -W gcc-10-arm-linux-gnueabi qemu-user-static gcc coreutils sharutils\ncoreutils 8.32-3\ngcc 4:10.1.0-1\ngcc-10-arm-linux-gnueabi 10.2.0-3cross2\nqemu-user-static 1:5.0-13\nsharutils 1:4.15.2-5\n$ lsb_release -dr\nDescription: Debian GNU/Linux bullseye/sid\nRelease: unstable\n$ uname -m\nx86_64\n