소스 검색

fx: 二进制类型的数据解码的时候 返回正确的 blob 数据类型 tag

master
SisMaker 4 년 전
부모
커밋
e4376642d8
1개의 변경된 파일16개의 추가작업 그리고 16개의 파일을 삭제
  1. +16
    -16
      src/eVPack.erl

+ 16
- 16
src/eVPack.erl 파일 보기

@ -1371,72 +1371,72 @@ decoder(192, RestBin) ->
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(193, RestBin) ->
<<Length:2/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(194, RestBin) ->
<<Length:3/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(195, RestBin) ->
<<Length:4/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(196, RestBin) ->
<<Length:5/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(197, RestBin) ->
<<Length:6/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(198, RestBin) ->
<<Length:7/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(199, RestBin) ->
<<Length:8/integer-little-unsigned-unit:8, BinStr:Length/binary, LeftBin/bitstring>> = RestBin,
RefSize = binary:referenced_byte_size(RestBin),
case RefSize / Length > ?VpBinaryCopyRatio of
true ->
{binary:copy(BinStr), LeftBin};
{{?blob, binary:copy(BinStr)}, LeftBin};
_ ->
{BinStr, LeftBin}
{{?blob, BinStr}, LeftBin}
end;
decoder(_, _) ->
erlang:throw({error, unexpected_end}).

불러오는 중...
취소
저장