packメソッドはsimple-routerのrouter-util.rbで使われています。
構文は「pack(template)->string」で、説明は「配列の内容をtemplateで指定された文字列にしたがってバイナリとしてパックした文字列を返す」と書いてありますが、いったい何がどうなるのでしょうか?
調べてわかったのは、packメソッドっというのはruby以外にPHPやperlにもある。
packではバイナリデータを出力するメソッドのようです。
構文のtemplateで型指定と長さを指定します。
それ以上の事はわかりませんでした。
とりあえず今回はtemplateの内容をまとめてみます。
(といってもリファレンスマニュアルからの抜粋ですが・・・)
| template文字列 | 説明 |
|---|---|
| a | ASCII(足りない部分はnull文字を詰める) |
| A | ASCII(足りない部分はスペースを詰める) |
| Z | null終端文字列(aと同じ) |
| b | ビットストリング(各バイトごとに下位ビットから上位ビット) |
| B | ビットストリング(各バイトごとに上位ビットから下位ビット) |
| h | 16進数文字列(下位ニブルが先) |
| H | 16進数文字列(上位ニブルが先) |
| c | char(8bit符号付整数) |
| C | char(8bit符号なし整数) |
| s | short(16bit符号付整数、エンディアンに依存) |
| S | unsigned short(16bit符号なし整数、エンディアンに依存) |
| i | int(符号付整数、エンディアンとintのサイズに依存) |
| I | unsigned int(16bit符号なし整数、エンディアンとintのサイズに依存) |
| l | long(32bit符号付整数、エンディアンに依存) |
| L | unsigned long(32bit符号付整数、エンディアンに依存) |
| q | long long(符号付整数、エンディアンとlong longのサイズに依存) |
| Q | unsigned long long(符号なし整数、エンディアンとlong longのサイズに依存) |
| m | base64された文字列。60オクテッドごとに改行が付加される |
| M | quoted-printable encodingされた文字列 |
| n | ネットワークバイトオーダーのunsigned short |
| N | ネットワークバイトオーダーのunsigned long |
| v | "VAX"バイトオーダーのunsigned short |
| V | "VAX"バイトオーダーのunsigned long |
| f | 単精度浮動小数点数 |
| d | 倍精度浮動小数点数 |
| e | リトルエンディアンの単精度浮動小数点数 |
| E | リトルエンディアンの倍精度浮動小数点数 |
| g | ビッグエンディアンの単精度浮動小数点数 |
| G | ビッグエンディアンの倍精度浮動小数点数 |
| p | ナル終端の文字列へのポインタ |
| P | 構造体(固定長文字列)へのポインタ |
| u | unencodeされた文字列 |
| U | UTF-8 |
| w | BER圧縮指数 |
| x | ナルバイト |
| X | 1バイト後退 |
| @ | 絶対位置への移動 |
また何かわかったら載せたいと思います。
0 件のコメント:
コメントを投稿