HUMANIZE_NUMBER(3) | FreeBSD Library Functions Manual | HUMANIZE_NUMBER(3) |
名称
humanize_number — 数値を人間が読み込み可能な形式に書式設定するライブラリ
System Utilities Library (libutil, -lutil)書式
#include < libutil.h> int
humanize_number( char *buf, size_t len, int64_t number, const char *suffix, int scale, int flags);
解説
humanize_number() 関数は、 number で与えられた符号付き 64 ビット量を buf に書式設定します。空白と suffix が終りに追加されます。 buf によって指されたバッファは、少なくとも len バイト長でなければなりません。書式設定された数が ( suffix を含んで) が buf に適合できないくらい長いなら、そうなるまで、 number を 1024 で割ります。この場合は、適切な指示子がある suffix を前に置きます。 humanize_number() 関数は、IEE/IEC (と、また現在、SI) 2 の冪乗の規約、または 10 の冪乗の概念ではなく、デフォルトで伝統的なコンピュータサイエンスの規約に従います。しかしながら、 HN_DIVISOR_1000 と HN_IEC_PREFIXES フラグを指定することによって、この振る舞いを変更することができます。
伝統的な (デフォルト) の接頭辞は、次の通りです:
接頭辞 | 説明 | 乗数 | 乗数 1000x |
(note) |
kilo | 1024 | 1000 |
M |
mega | 1048576 | 1000000 |
G |
giga | 1073741824 | 1000000000 |
T |
tera | 1099511627776 | 1000000000000 |
P |
peta | 1125899906842624 | 1000000000000000 |
E |
exa | 1152921504606846976 | 1000000000000000000 |
注意: 大文字 K は、2 の冪乗、小文字の k は、10 の冪乗を示します。
IEE/IEC (と、また現在、SI) 2 の冪乗の接頭辞は、次の通りです:
接頭辞 | 説明 | 乗数 |
Ki |
kibi | 1024 |
Mi |
mebi | 1048576 |
Gi |
gibi | 1073741824 |
Ti |
tebi | 1099511627776 |
Pi |
pebi | 1125899906842624 |
Ei |
exbi | 1152921504606846976 |
len 引数は、役に立つ結果が buf 中に生成されるのを確実にするために、少なくとも 4 足す suffix の長さでなければなりません。指定された接頭辞を使用するには、 scale (乗数 = 1024 ^ scale; HN_DIVISOR_1000 が指定されるとき、乗数 = 1000 ^ scale) としてこれを指定します。これは、以下の scale フラグのいずれとも結合することができません。
次のフラグは、 scale で渡されます:
- HN_AUTOSCALE
- 可能な最も小さい乗数を使用してバッファを書式設定します。
- HN_GETSCALE
- バッファにそれを書式設定するの代わりに接頭辞インデックス番号 (適合するように割らなければならない number の回数) を返します。
次のフラグは、 flags で渡されます:
- HN_DECIMAL
- 最終的な結果が 10 未満であるなら、1 つの小数位を使用して、それを表示します。
- HN_NOSPACE
- number と接頭辞の間に空白を置きません。
- HN_B
-
元の結果に接頭辞がないなら、接頭辞として‘
B
’ (バイト) を使用します。 - HN_DIVISOR_1000
- 1024 の代わりに 1000 で number を割ります。
- HN_IEC_PREFIXES
- 接頭辞 ((Ki, Mi, Gi...) の IEE/IEC 概念を使用します。このフラグは、 HN_DIVISOR_1000 も指定されるとき、効果がありません。
戻り値
成功すれば、 humanize_number 関数は、 buf が十分に大きいなら、(終端の ヌル文字 を除いて) buf に格納された文字の数を返し、失敗すれば、-1 を返します。失敗しても、 buf の内容は、修正されるかもしれません。 HN_GETSCALE が指定されるなら、接頭辞インデックス番号が代わりに返されます。関連項目
expand_number(3)規格
HN_DIVISOR_1000 と HN_IEC_PREFIXES フラグは、 ISO/IEC Std 80000-13:2008 と IEEE Std 1541-2002 に適合しています。歴史
humanize_number() 関数は、 NetBSD 2.0 と、次に FreeBSD 5.3 ではじめて登場しました。 HN_IEC_PREFIXES フラグは、 FreeBSD 9.0 で導入されました。October 7, 2013 | FreeBSD |