diff options
author | Gustav Simonsson <[email protected]> | 2012-07-03 17:17:00 +0200 |
---|---|---|
committer | Gustav Simonsson <[email protected]> | 2012-07-03 17:17:00 +0200 |
commit | 49a4c58106ca913328b5f28e7124e820b15e4b43 (patch) | |
tree | 2cf8eb08069d673673e01810b529cf68ed336ccb /lib/asn1 | |
parent | 5fdcb7a097a3956ebf52c24721c91f60aeb96aa1 (diff) | |
download | otp-49a4c58106ca913328b5f28e7124e820b15e4b43.tar.gz otp-49a4c58106ca913328b5f28e7124e820b15e4b43.tar.bz2 otp-49a4c58106ca913328b5f28e7124e820b15e4b43.zip |
Keep encoded octets of constrained whole number value and
range as binaries and use erlang:byte_size to get length
of octets and range. For speed.
Diffstat (limited to 'lib/asn1')
-rw-r--r-- | lib/asn1/src/asn1rt_per_bin.erl | 8 | ||||
-rw-r--r-- | lib/asn1/src/asn1rt_per_bin_rt2ct.erl | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/lib/asn1/src/asn1rt_per_bin.erl b/lib/asn1/src/asn1rt_per_bin.erl index 4e0c12936c..85988aa21d 100644 --- a/lib/asn1/src/asn1rt_per_bin.erl +++ b/lib/asn1/src/asn1rt_per_bin.erl @@ -695,10 +695,10 @@ encode_constrained_number({Lb,Ub},Val) when Val >= Lb, Ub >= Val -> Range =< 65536 -> {octets,<<Val2:16>>}; Range =< (1 bsl (255*8)) -> - Octs = binary:bin_to_list(binary:encode_unsigned(Val2)), - RangeOcts = binary:bin_to_list(binary:encode_unsigned(Range - 1)), - OctsLen = length(Octs), - RangeOctsLen = length(RangeOcts), + Octs = binary:encode_unsigned(Val2), + RangeOcts = binary:encode_unsigned(Range - 1), + OctsLen = erlang:byte_size(Octs), + RangeOctsLen = erlang:byte_size(RangeOcts), LengthBitsNeeded = minimum_bits(RangeOctsLen - 1), [{bits, LengthBitsNeeded, OctsLen - 1}, {octets, Octs}]; true -> diff --git a/lib/asn1/src/asn1rt_per_bin_rt2ct.erl b/lib/asn1/src/asn1rt_per_bin_rt2ct.erl index f2e93cf096..46d4bcb065 100644 --- a/lib/asn1/src/asn1rt_per_bin_rt2ct.erl +++ b/lib/asn1/src/asn1rt_per_bin_rt2ct.erl @@ -605,10 +605,10 @@ encode_constrained_number({Lb,Ub},Val) when Val >= Lb, Ub >= Val -> % Size = {octets,<<Val2:16>>}; [20,2,<<Val2:16>>]; Range =< (1 bsl (255*8)) -> - Octs = binary:bin_to_list(binary:encode_unsigned(Val2)), - RangeOcts = binary:bin_to_list(binary:encode_unsigned(Range - 1)), - OctsLen = length(Octs), - RangeOctsLen = length(RangeOcts), + Octs = binary:encode_unsigned(Val2), + RangeOcts = binary:encode_unsigned(Range - 1), + OctsLen = erlang:byte_size(Octs), + RangeOctsLen = erlang:byte_size(RangeOcts), LengthBitsNeeded = asn1rt_per_bin:minimum_bits(RangeOctsLen - 1), [10,LengthBitsNeeded,OctsLen-1,20,OctsLen,Octs]; true -> |