EN JA
HUMANIZE_NUMBER(3)
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_1000HN_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_1000HN_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