Skip to content

Latest commit

 

History

History
432 lines (277 loc) · 14.7 KB

moyo_binary.md

File metadata and controls

432 lines (277 loc) · 14.7 KB

Module moyo_binary

バイナリに関する処理を集めたユーティリティモジュール.

Copyright (c) 2013-2014 DWANGO Co., Ltd. All Rights Reserved.

Function Index

abbreviate/2Equivalent to abbreviate(Bin, MaxLength, <<"...">>).
abbreviate/3入力バイナリが最大長を超えている場合に、指定された省略文字列を使って切り詰めを行う.
append/2Binの末尾にIoDataを連結する.
divide/2IoDataを指定の位置で分割する.
fill/2同じ数字(文字)が連続したバイナリを作る.
fixed_point_binary_to_number/3固定小数点表記のバイナリからnumber()を生成する.
format/2指定されたフォーマットのバイナリを生成して返す.
from_hex/116進数表記のバイナリを生のバイナリに変換する.
from_integer/3IntをBase進数に変換してバイナリ文字列で返す。大文字小文字が指定できる.
generate_random_list/2ランダム かつ ユニークな要素(バイナリ)をCount個含むリストを生成する.
join/2バイナリリストの要素をセパレータで区切ったバイナリを返す.
number_to_fixed_point_binary/3number()から固定小数点表記のバイナリを生成する.
strip/1バイナリの両端からスペース(\s)を取り除く(strip(Binary, both)).
strip/2指定された方向のスペースを取り除く(strip(Binary, Direction, <<"\s">>)).
strip/3指定された方向から任意の1文字を全て取り除く(strip(Binary, Direction, Target, single)).
strip/4指定された方向から任意の文字を取り除く.
to_binary/1Erlangの項をバイナリに変換する.
to_float/1バイナリを小数に変換する.
to_hex/1生のバイナリを16進数表記のバイナリに変換する.
to_lower/1ASCII文字列の大文字を小文字に変換する。それ以外は変換しない。.
to_number/1数値表現のバイナリを、整数もしくは浮動小数点数に変換する..
to_upper/1ASCII文字列の小文字を大文字に変換する。それ以外は変換しない。.
tr/2入力バイナリ内の文字を、マッピング指定に従って置換する.
try_binary_to_existing_atom/2バイナリのアトムへの変換を試みる.
try_to_atom/1Equivalent to try_to_atom(Binary, []).
try_to_atom/2バイナリのアトムへの変換を試みる.

Function Details

abbreviate/2


abbreviate(Bin::binary(), MaxLength::non_neg_integer()) -> binary()

Equivalent to abbreviate(Bin, MaxLength, <<"...">>).

abbreviate/3


abbreviate(Input::binary(), MaxLength::non_neg_integer(), Ellipsis::binary()) -> binary()

入力バイナリが最大長を超えている場合に、指定された省略文字列を使って切り詰めを行う

省略文字列が最大長よりも長い場合は、省略時には省略文字列の長さが優先される。(最大長の指定によって、省略文字列自体が切り詰められることはない)

入力バイナリが、UTF-8でエンコードされた日本語等のマルチバイト文字列の場合、省略の際に文字の境界は考慮されないので、 省略によって不正な文字列が生成される可能性があるので注意が必要。

  %% 省略される場合
  > abbreviate(<<"hello world">>, 6, <<"...">>).
  <<"hel...">>
  
  %% 最大長よりも短い場合は、入力バイナリがそのまま返る
  > abbreviate(<<"hello world">>, 100, <<"...">>).
  <<"hello world">>

append/2


append(Bin::binary(), IoData::iodata()) -> binary()

Binの末尾にIoDataを連結する.

divide/2


divide(Position::non_neg_integer(), IoData::iodata()) -> {iodata(), iodata()}

IoDataを指定の位置で分割する

fill/2


fill(Int::integer(), Count::integer()) -> binary()

同じ数字(文字)が連続したバイナリを作る.

  > fill(0, 10).
  <<0,0,0,0,0,0,0,0,0,0>>
  > fill($a, 10).
  <<"aaaaaaaaaa">>

fixed_point_binary_to_number/3


fixed_point_binary_to_number(IntegerPartLength, DecimalPartLength, Bin::binary()) -> number()
  • IntegerPartLength = integer()
  • DecimalPartLength = integer()

固定小数点表記のバイナリからnumber()を生成する.

固定小数点のバイナリはビッグエンディアン.

  1> fixed_point_binary_to_number(16, 16, <<0, 1, 128, 0>>).
  1.5

format/2


format(Format, Data) -> binary()

指定されたフォーマットのバイナリを生成して返す.

list_to_binary(io_lib:format(Format, Data))と同等.

from_hex/1


from_hex(Encoded::binary()) -> Raw::binary()

16進数表記のバイナリを生のバイナリに変換する. [0-9a-zA-Z]にマッチしない文字がある場合は {invalid_hex_binary, Input} error が発生する

ex:

  > moyo_binary:from_hex(<<"61625f595a">>).
  <<"ab_YZ">>

from_integer/3


from_integer(Int::integer(), Base::2..36, Case::uppercase | lowercase) -> binary()

IntをBase進数に変換してバイナリ文字列で返す。大文字小文字が指定できる

generate_random_list/2


generate_random_list(ByteSize::non_neg_integer(), Count::non_neg_integer()) -> [binary()]

ランダム かつ ユニークな要素(バイナリ)をCount個含むリストを生成する.

join/2


join(Tail::[binary()], Separator::binary()) -> binary()

バイナリリストの要素をセパレータで区切ったバイナリを返す.

number_to_fixed_point_binary/3


number_to_fixed_point_binary(IntegerPartLength, DecimalPartLength, Num::number()) -> binary()
  • IntegerPartLength = integer()
  • DecimalPartLength = integer()

number()から固定小数点表記のバイナリを生成する.

固定小数点のバイナリはビッグエンディアン.

  1> number_to_fixed_point_binary(16, 16, 1.5).
  <<0, 1, 128, 0>>

strip/1


strip(Binary::binary()) -> binary()

バイナリの両端からスペース(\s)を取り除く(strip(Binary, both)).

strip/2


strip(Binary, Direction) -> Stripped
  • Binary = binary()
  • Direction = left | right | both
  • Stripped = binary()

指定された方向のスペースを取り除く(strip(Binary, Direction, <<"\s">>)).

strip/3


strip(Binary, Direction, Target) -> Stripped
  • Binary = binary()
  • Direction = left | right | both
  • Target = binary()
  • Stripped = binary()

指定された方向から任意の1文字を全て取り除く(strip(Binary, Direction, Target, single)).

strip/4


strip(Binary, Direction, Target, Type) -> Stripped
  • Binary = binary()
  • Direction = left | right | both
  • Target = binary()
  • Type = single | order | random
  • Stripped = binary()

指定された方向から任意の文字を取り除く.

第4引数では次の値を指定.

  • single

Targetで指定できる文字は1文字.

  • order

Targetで複数文字を指定できる. 指定順序通りの場合のみ取り除く.
ex:

  > strip(<<"ababbabcabcabbab">>, both, <<"ab">>, order).
  <<"babcabcabb">>
  • random

Targetで複数文字を指定できる. 順不同で, 文字それぞれを取り除く.
ex:

  > strip(<<"ababbabcabcabbab">>, both, <<"ab">>, random).
  <<"cabc">>

to_binary/1


to_binary(V::term()) -> binary()

Erlangの項をバイナリに変換する

ユニコード値のリスト(文字列)を、UTF-8バイナリ列に変換したい場合はunicodeモジュールを使用すること.

to_float/1


to_float(Bin::binary()) -> float()

バイナリを小数に変換する.

erlang:binary_to_float/1とは異なり<<"5">>のような整数を表すバイナリも小数に変換可能.

to_hex/1


to_hex(Raw::binary()) -> Encoded::binary()

生のバイナリを16進数表記のバイナリに変換する.

16進数のアルファベット部分は、常に小文字が使用される.
ex:

  > moyo_binary:to_hex(<<"ab_YZ">>).
  <<"61625f595a">>

to_lower/1


to_lower(Str::binary()) -> binary()

ASCII文字列の大文字を小文字に変換する。それ以外は変換しない。

  > to_lower(<<"StRiNg">>).
  <<"string">>
  > to_lower(<<"0123-+-+">>).
  <<"0123-+-+">>

to_number/1


to_number(Bin::binary()) -> number()

数値表現のバイナリを、整数もしくは浮動小数点数に変換する.

引数で与えられたバイナリが整数表現だった場合は整数に、小数表現だった場合は浮動小数点数に変換する. 整数表現、小数表現のいずれでもなかった場合は badarg を投げる.

to_upper/1


to_upper(Str::binary()) -> binary()

ASCII文字列の小文字を大文字に変換する。それ以外は変換しない。

  > to_upper(<<"StRiNg">>).
  <<"STRING">>
  > to_upper(<<"0123-+-+">>).
  <<"0123-+-+">>

tr/2


tr(Subject::binary(), ConvertMapping) -> binary()
  • ConvertMapping = [{From::char(), To::char()}]

入力バイナリ内の文字を、マッピング指定に従って置換する.

  > tr(<<"abcdef">>, [{$a, $1}, {$c, $3}]).
  <<"1b3def">>

try_binary_to_existing_atom/2


try_binary_to_existing_atom(Binary::binary(), Encoding) -> binary() | atom()
  • Encoding = latin1 | unicode | utf8

バイナリのアトムへの変換を試みる.

バイナリに対応するアトムが既に存在する場合は、そのアトムを返し、存在しない場合は元のバイナリを返す.

try_to_atom/1


try_to_atom(Binary::binary()) -> atom() | {error, term()}

Equivalent to try_to_atom(Binary, []).

try_to_atom/2


try_to_atom(Binary::binary(), Options) -> atom() | {error, term()}
  • Options = [create | {encoding, Encoding}]
  • Encoding = latin1 | unicode | utf8

バイナリのアトムへの変換を試みる.

バイナリに対応するアトムが既に存在する場合はそのアトムを返し、存在しない場合は{error, badarg}を返す.
Options{encoding, Encoding}を指定すると、Encodingとしてバイナリを変換する.
デフォルトでutf8としてバイナリを変換する.
Optionscreateを指定すると、アトムがまだ存在しない場合もアトムを返す.
※ Erlang/OTP 20より古いバージョンでは、コードポイントが255を超えるUnicode文字がバイナリに含まれる場合変換に失敗する.