binary_to_term(Binary, Opts) -> term() | {term(), Used}
OTP R13B04
类型:
Binary = ext_binary()
Opt = safe | used
Opts = [Opt]
Used = integer() >= 1
与 binary_to_term/1
相同,但采用以下选项:
safe
-
从不受信任的来源接收二进制文件时,请使用此选项。
启用后,它可以防止解码可用于攻击 Erlang 运行时的数据。如果接收到不安全数据,解码将失败并出现
badarg
错误。这可以防止直接创建新原子、间接创建新原子(因为它们嵌入到某些结构中,例如进程标识符、refs 和 funs)以及创建新的外部函数引用。这些资源都不会被垃圾回收,因此未经检查的创建它们可能会耗尽可用内存。
> binary_to_term(<<131,100,0,5,"hello">>, [safe]). ** exception error: bad argument > hello. hello > binary_to_term(<<131,100,0,5,"hello">>, [safe]). hello
警告safe
选项确保 Erlang 运行时安全地处理数据,但不能保证数据对您的应用程序是安全的。您必须始终验证来自不受信任来源的数据。如果二进制文件通过不受信任的来源存储或传输,您还应该考虑对其进行加密签名。 used
-
将返回值更改为
{Term, Used}
,其中Used
是从Binary
实际读取的字节数。> Input = <<131,100,0,5,"hello","world">>. <<131,100,0,5,104,101,108,108,111,119,111,114,108,100>> > {Term, Used} = binary_to_term(Input, [used]). {hello, 9} > split_binary(Input, Used). {<<131,100,0,5,104,101,108,108,111>>, <<"world">>}
失败:badarg
(如果指定了 safe
并且解码了不安全数据)。
也可以看看term_to_binary/1
,
binary_to_term/1
, 和
list_to_existing_atom/1
.
相关用法
- erlang binary_to_term(Binary)用法及代码示例
- erlang binary_to_atom用法及代码示例
- erlang binary_to_float用法及代码示例
- erlang binary_to_integer用法及代码示例
- erlang binary_to_list用法及代码示例
- erlang binary_to_atom(Binary, Encoding)用法及代码示例
- erlang binary_to_float(Binary)用法及代码示例
- erlang binary_to_integer(Binary)用法及代码示例
- erlang binary_to_integer(Binary, Base)用法及代码示例
- erlang binary_part用法及代码示例
- erlang binary_part(Subject, PosLen)用法及代码示例
- erlang bin_to_list(Subject, PosLen)用法及代码示例
- erlang bit_size(Bitstring)用法及代码示例
- erlang bitstring_to_list(Bitstring)用法及代码示例
- erlang byte_size用法及代码示例
- erlang basedir(PathType, Application, Opts)用法及代码示例
- erlang basename(Filename)用法及代码示例
- erlang basename(Filename, Ext)用法及代码示例
- erlang byte_size(Bitstring)用法及代码示例
- erlang sin用法及代码示例
- erlang cos用法及代码示例
- erlang tan用法及代码示例
- erlang asin用法及代码示例
- erlang acos用法及代码示例
- erlang atan用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 binary_to_term(Binary, Opts) -> term() | {term(), Used}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。