これは何?
ruby の pack template 文字列を覚えられないので毎回調べるんだけど、マニュアルの記載は一覧性がないし使わないのも混ざっていて不便(私にとって不便ということで、マニュアルとして悪いわけではない)なので、まとめてみた。
私が使うやつしか書かないのであしからず。
整数
まあ 8bit はエンディアン関係ないけど。
| エンディアン | 符号 | 8bit | 16bit | 32bit | 64bit |
|---|---|---|---|---|---|
| LE (Intel) | signed | c |
s< |
l< |
q< |
| LE (Intel) | unsigned | C |
v |
V |
Q< |
| BE (Motorola) | signed | c |
s> |
l> |
q> |
| BE (Motorola) | unsigned | C |
n |
N |
Q> |
v や N などを使わなければ
- 8bit から順に
C,S,L,Q。 - 小文字は signed、大文字は unsigned。
- エンディアンは
<と>で表現
と、一貫性のある感じになる。
でもまあ c, v, n などでなんとかなる場合はそうする → やっぱり符号付きが必要 → あれどうするんだっけ ってなるよね。
浮動小数点数
| エンディアン | 32bit | 64bit |
|---|---|---|
| LE (Intel) | e |
E |
| BE (Motorola) | g |
G |
x86 や ARM なら IEEE754 の普通の浮動小数点数になると思うけど、環境によってはその環境なりの浮動小数点数になる模様。
半精度はない模様。使う予定はないけどちょっと残念。