Binary
如何將換行符分隔的 ascii 數字流轉換為二進制(然後再返回)?
/dev/dsp
這是在與和互動的上下文中pacat
。理想情況下,我希望能夠指定編碼機制(big-與 little-endian、char/short/long)。
作為獎勵,某種二進制結構的打包可能會很好。
我基本上在考慮像numpy 的 dtype之類的東西,但在外殼上。
樣本輸入/輸出
> seq 11 | bincat --big -n 1 | hd 01 02 03 04 05 06 07 08 09 0A 0B
程式語言在這個任務上應該沒有問題;這是從輸入中的數字列表中打包 64 位整數(大端或小端)和本機 32、16 和 8 位的一種方法
$ cat input -1 2 $ < input perl -pe '$_=pack "q>",$_' | xxd 00000000: ffff ffff ffff ffff 0000 0000 0000 0002 ................ $ < input perl -pe '$_=pack "q<",$_' | xxd 00000000: ffff ffff ffff ffff 0200 0000 0000 0000 ................ $ < input perl -pe '$_=pack "l",$_' | xxd 00000000: ffff ffff 0200 0000 ........ $ < input perl -pe '$_=pack "s",$_' | xxd 00000000: ffff 0200 .... $ < input perl -pe '$_=pack "c",$_' | xxd 00000000: ff02 .. $
另一種方式需要知道二進製文件的內容,否則數字可能會全部錯誤
$ jot 255 | perl -pe '$_=pack "l>",$_' > 32big $ < 32big perl -nE 'say for unpack "l*",$_' | head -3 16777216 33554432 50331648 $ < 32big perl -nE 'say for unpack "l>*",$_' | head -3 1 2 3 $