-module(test).
|
|
|
|
-include("protoMsg.hrl").
|
|
-compile(export_all).
|
|
|
|
encode_int32(N) ->
|
|
TT = #tint32{int1 = 1, int2 = -1, int3 = 128, int4 = -128, int5 = 65536,
|
|
int6 = -65536, int7 = 2100000000, int8 = -2100000000, int9 = 678665, int10 = -678665},
|
|
tt1(N, TT).
|
|
|
|
tt1(0, TT) ->
|
|
ok;
|
|
tt1(N, TT) ->
|
|
protoMsg:encode(TT),
|
|
tt1(N - 1, TT).
|
|
|
|
decode_int32(N) ->
|
|
TT = #tint32{int1 = 1, int2 = -1, int3 = 128, int4 = -128, int5 = 65536,
|
|
int6 = -65536, int7 = 2100000000, int8 = -2100000000, int9 = 678665, int10 = -678665},
|
|
Bin = protoMsg:encode(TT),
|
|
tt2(N, iolist_to_binary(Bin)).
|
|
|
|
tt2(0, Bin) ->
|
|
Bin;
|
|
tt2(N, Bin) ->
|
|
protoMsg:decode(Bin),
|
|
tt2(N - 1, Bin).
|
|
|
|
encode_addressBook(N) ->
|
|
Add = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "123456789"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "01234567890"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
tt3(N, Add).
|
|
|
|
tt3(0, Add) ->
|
|
ok;
|
|
tt3(N, Add) ->
|
|
protoMsg:encode(Add),
|
|
tt3(N - 1, Add).
|
|
|
|
|
|
decode_addressBook(N) ->
|
|
AddressBook = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "123456789"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "01234567890"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
Bin = protoMsg:encode(AddressBook),
|
|
tt4(N, iolist_to_binary(Bin)).
|
|
tt4(0, Bin) ->
|
|
Bin;
|
|
tt4(N, Bin) ->
|
|
protoMsg:decode(Bin),
|
|
tt4(N - 1, Bin).
|
|
|
|
test1() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tbool{bool = true}))).
|
|
|
|
test21() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tint8{int1 = 123, int2 = -22}))).
|
|
|
|
test22() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tuint8{int1 = 123, int2 = 182}))).
|
|
|
|
test31() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tint16{int1 = 12343, int2 = -3422}))).
|
|
test32() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tuint16{int1 = 43244, int2 = 43243}))).
|
|
|
|
test41() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tint32{int1 = 12343434, int2 = -34434322}))).
|
|
|
|
|
|
test42() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tuint32{int1 = 432444343, int2 = 432443433}))).
|
|
|
|
test51() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tint64{int1 = 12344343434, int2 = -344343434322}))).
|
|
test52() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tuint64{int1 = 4343432444343, int2 = 4324434343433}))).
|
|
|
|
tt6(N) ->
|
|
Bin = iolist_to_binary(protoMsg:encode(#tinteger{int1 = -1, int2 = 1, int3 = 128, int4 = -128, int5 = -3244232, int6 = 432423432, int7 = -43434343434434, int8 = 432424242434})),
|
|
<<_MsgId:16/big, MsgBin/binary>> = Bin,
|
|
test6(N, MsgBin).
|
|
|
|
test6(0, Bin) ->
|
|
io:format("IMY******111 ~p~n", [protoMsg:decode(Bin)]);
|
|
test6(N, Bin) ->
|
|
protoMsg:decodeBin(15, Bin),
|
|
test6(N - 1, Bin).
|
|
|
|
tt66(N) ->
|
|
Bin = iolist_to_binary(protoMsg:encode(#tinteger{int1 = -1, int2 = 1, int3 = 128, int4 = -128, int5 = -3244232, int6 = 432423432, int7 = -43434343434434, int8 = 432424242434})),
|
|
test66(N, Bin).
|
|
|
|
test66(0, Bin) ->
|
|
<<_MsgId:16/big, MsgBin/binary>> = Bin,
|
|
<<IntBits1:8, Int1:IntBits1/big-signed, IntBits2:8, Int2:IntBits2/big-signed, IntBits3:8, Int3:IntBits3/big-signed, IntBits4:8, Int4:IntBits4/big-signed, IntBits5:8, Int5:IntBits5/big-signed, IntBits6:8, Int6:IntBits6/big-signed, IntBits7:8, Int7:IntBits7/big-signed, IntBits8:8, Int8:IntBits8/big-signed, LeftBin/binary>> = MsgBin,
|
|
A = {tinteger, Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8},
|
|
io:format("IMY******111 ~p~n", [A]);
|
|
test66(N, Bin) ->
|
|
<<_MsgId:16/big, MsgBin/binary>> = Bin,
|
|
%% <<IntBits1:8, Int1:IntBits1/big-signed, IntBits2:8, Int2:IntBits2/big-signed, IntBits3:8, Int3:IntBits3/big-signed, IntBits4:8, Int4:IntBits4/big-signed, IntBits5:8, Int5:IntBits5/big-signed, IntBits6:8, Int6:IntBits6/big-signed, IntBits7:8, Int7:IntBits7/big-signed, IntBits8:8, Int8:IntBits8/big-signed, LeftBin/binary>> = MsgBin,
|
|
%% {tinteger, Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8},
|
|
<<IntBits1:8, V1:IntBits1/big-signed, IntBits2:8, V2:IntBits2/big-signed, IntBits3:8, V3:IntBits3/big-signed, IntBits4:8, V4:IntBits4/big-signed, IntBits5:8, V5:IntBits5/big-signed, IntBits6:8, V6:IntBits6/big-signed, IntBits7:8, V7:IntBits7/big-signed, IntBits8:8, V8:IntBits8/big-signed, LeftBin1/binary>> = MsgBin,
|
|
{tinteger, V1, V2, V3, V4, V5, V6, V7, V8},
|
|
test66(N - 1, Bin).
|
|
|
|
tt67(N) ->
|
|
Bin = iolist_to_binary(protoMsg:encode(#tinteger{int1 = -1, int2 = 1, int3 = 128, int4 = -128, int5 = -3244232, int6 = 432423432, int7 = -43434343434434, int8 = 432424242434})),
|
|
test67(N, Bin).
|
|
|
|
test67(0, Bin) ->
|
|
A = protoMsg:decode(Bin),
|
|
io:format("IMY******111 ~p~n", [A]);
|
|
test67(N, Bin) ->
|
|
_A = protoMsg:decode(Bin),
|
|
test67(N - 1, Bin).
|
|
|
|
test7() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tnumber{int1 = -1, int2 = 1, int3 = 128, int4 = -128, int5 = -3244232, int6 = 432423432, int7 = -43434343434434, int8 = 432424242434, float1 = -34234343.343, float2 = 43242342342342.434}))).
|
|
|
|
test81() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tfloat{int1 = -34234343.343, int2 = 42342342.434}))).
|
|
test82() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tdouble{int1 = -342343433333.343, int2 = 423423423333.434}))).
|
|
|
|
test9() ->
|
|
protoMsg:decode(iolist_to_binary(protoMsg:encode(#tstring{int1 = "dfdf143242", int2 = "发地方撒发送"}))).
|
|
|
|
allType() ->
|
|
AllType = #allType{
|
|
bool = false
|
|
, int8 = -66
|
|
, uint8 = 66
|
|
, int16 = -666
|
|
, uint16 = 666
|
|
, int32 = -66666
|
|
, uint32 = 66666
|
|
, int64 = -5294967296
|
|
, uint64 = 5294967296
|
|
, inte8 = -88
|
|
, uinte8 = 88
|
|
, inte16 = -8888
|
|
, uinte16 = 8888
|
|
, inte32 = -888888
|
|
, uinte32 = 888888
|
|
, inte64 = -8888888888
|
|
, uinte64 = 8888888888
|
|
, num8 = -99
|
|
, unum8 = 99
|
|
, num16 = -9999
|
|
, unum16 = 9999
|
|
, num32 = -999999
|
|
, unum32 = 999999
|
|
, num64 = -9999999999
|
|
, unum64 = 9999999999
|
|
, numfloat = 999999.99999
|
|
, numdouble = 9999999999.99999
|
|
, float = 123456.789321
|
|
, double = 4300000000.789321
|
|
, string1 = "this is a test!!!!"
|
|
, string2 = "这是一个测试, 等会看结果~!!!"
|
|
, lbool = [true, false, true, false]
|
|
, lint8 = [123, -123, 66, -66, 88, -88]
|
|
, luint8 = [1, 2, 3, 123, 67, 88]
|
|
, lint16 = [-12345, 12345, 6666, -6666]
|
|
, luint16 = [12345, 12345, 6666, 6666]
|
|
, lint32 = [-12345, 12345, 6666, -6666, -4000000000, 66666666]
|
|
, luint32 = [12345, 12345, 6666, 6666, 4000000000, 66666666]
|
|
, lint64 = [-12345, 12345, -6666, 6666, 400000000000, -66666666666666666]
|
|
, luint64 = [12345, 12345, 6666, 6666, 400000000000, 66666666666666666]
|
|
, linte8 = [123, 12, -66, 66, 34]
|
|
, linte16 = [12334, 12, -6666, 6666, 3412]
|
|
, linte32 = [12334, 12, -666666666, 6666, 3412]
|
|
, linte64 = [12334, 12, -666666666666, 6666, 3412]
|
|
, lnum8 = [123, 12.123, -66.456789, 66, 34]
|
|
, lnum16 = [12334, -12, -6666.6666, 6666, 3412]
|
|
, lnum32 = [12334, 12.7777, -666666666.666777, 6666, 3412]
|
|
, lnum64 = [12334, 12, -666666666666.88888, 6666, 3412.9999]
|
|
, lnfloat32 = [-666666.88888, 4434.434, 434.43, 3434]
|
|
, lnfloat64 = [-666666666666.88888, 4434.434, 434.43, 11111111111.34343, 5566]
|
|
, lfloat = [1.1, 2.2, 3.3, 666666.666]
|
|
, ldouble = [111111111.1, 22222222.2, 3.3, 66666622333333.666]
|
|
, lstring = ["fdsafsdfsfs", "电风扇打法胜多负少的", <<"fdsfasdfsfs">>, <<"大丰收大丰收的方式"/utf8>>]
|
|
, lunion = [#union{}, #union{type = 1, test = "aaaaa"}, #union{type = 2, test = "嘿嘿嘿嘿"}]
|
|
},
|
|
List = protoMsg:encode(AllType),
|
|
iolist_to_binary(List),
|
|
%%io:format("~p~n", [List]),
|
|
AllType1 = protoMsg:decode(iolist_to_binary(List)).
|
|
%%AllType1.
|
|
|
|
tall1(0) ->
|
|
ok;
|
|
tall1(N) ->
|
|
AllType = #allType{
|
|
bool = false
|
|
, int8 = -66
|
|
, uint8 = 66
|
|
, int16 = -666
|
|
, uint16 = 666
|
|
, int32 = -66666
|
|
, uint32 = 66666
|
|
, int64 = -5294967296
|
|
, uint64 = 5294967296
|
|
, inte8 = -88
|
|
, uinte8 = 88
|
|
, inte16 = -8888
|
|
, uinte16 = 8888
|
|
, inte32 = -888888
|
|
, uinte32 = 888888
|
|
, inte64 = -8888888888
|
|
, uinte64 = 8888888888
|
|
, num8 = -99
|
|
, unum8 = 99
|
|
, num16 = -9999
|
|
, unum16 = 9999
|
|
, num32 = -999999
|
|
, unum32 = 999999
|
|
, num64 = -9999999999
|
|
, unum64 = 9999999999
|
|
, numfloat = 999999.99999
|
|
, numdouble = 9999999999.99999
|
|
, float = 123456.789321
|
|
, double = 4300000000.789321
|
|
, string1 = "this is a test!!!!"
|
|
, string2 = "这是一个测试, 等会看结果~!!!"
|
|
, lbool = [true, false, true, false]
|
|
, lint8 = [123, -123, 66, -66, 88, -88]
|
|
, luint8 = [1, 2, 3, 123, 67, 88]
|
|
, lint16 = [-12345, 12345, 6666, -6666]
|
|
, luint16 = [12345, 12345, 6666, 6666]
|
|
, lint32 = [-12345, 12345, 6666, -6666, -4000000000, 66666666]
|
|
, luint32 = [12345, 12345, 6666, 6666, 4000000000, 66666666]
|
|
, lint64 = [-12345, 12345, -6666, 6666, 400000000000, -66666666666666666]
|
|
, luint64 = [12345, 12345, 6666, 6666, 400000000000, 66666666666666666]
|
|
, linte8 = [123, 12, -66, 66, 34]
|
|
, linte16 = [12334, 12, -6666, 6666, 3412]
|
|
, linte32 = [12334, 12, -666666666, 6666, 3412]
|
|
, linte64 = [12334, 12, -666666666666, 6666, 3412]
|
|
, lnum8 = [123, 12.123, -66.456789, 66, 34]
|
|
, lnum16 = [12334, -12, -6666.6666, 6666, 3412]
|
|
, lnum32 = [12334, 12.7777, -666666666.666777, 6666, 3412]
|
|
, lnum64 = [12334, 12, -666666666666.88888, 6666, 3412.9999]
|
|
, lnfloat32 = [-666666.88888, 4434.434, 434.43, 3434]
|
|
, lnfloat64 = [-666666666666.88888, 4434.434, 434.43, 11111111111.34343, 5566]
|
|
, lfloat = [1.1, 2.2, 3.3, 666666.666]
|
|
, ldouble = [111111111.1, 22222222.2, 3.3, 66666622333333.666]
|
|
, lstring = ["fdsafsdfsfs", "电风扇打法胜多负少的", <<"fdsfasdfsfs">>, <<"大丰收大丰收的方式"/utf8>>]
|
|
, lunion = [#union{}, #union{type = 1, test = "aaaaa"}, #union{type = 2, test = "嘿嘿嘿嘿"}]
|
|
},
|
|
%protoMsg:encode(AllType),
|
|
term_to_binary(AllType),
|
|
tall1(N - 1).
|
|
|
|
|
|
tall(N) ->
|
|
AllType = #allType{
|
|
bool = false
|
|
, int8 = -66
|
|
, uint8 = 66
|
|
, int16 = -666
|
|
, uint16 = 666
|
|
, int32 = -66666
|
|
, uint32 = 66666
|
|
, int64 = -5294967296
|
|
, uint64 = 5294967296
|
|
, inte8 = -88
|
|
, uinte8 = 88
|
|
, inte16 = -8888
|
|
, uinte16 = 8888
|
|
, inte32 = -888888
|
|
, uinte32 = 888888
|
|
, inte64 = -8888888888
|
|
, uinte64 = 8888888888
|
|
, num8 = -99
|
|
, unum8 = 99
|
|
, num16 = -9999
|
|
, unum16 = 9999
|
|
, num32 = -999999
|
|
, unum32 = 999999
|
|
, num64 = -9999999999
|
|
, unum64 = 9999999999
|
|
, numfloat = 999999.99999
|
|
, numdouble = 9999999999.99999
|
|
, float = 123456.789321
|
|
, double = 4300000000.789321
|
|
, string1 = "this is a test!!!!"
|
|
, string2 = "这是一个测试, 等会看结果~!!!"
|
|
, lbool = [true, false, true, false]
|
|
, lint8 = [123, -123, 66, -66, 88, -88]
|
|
, luint8 = [1, 2, 3, 123, 67, 88]
|
|
, lint16 = [-12345, 12345, 6666, -6666]
|
|
, luint16 = [12345, 12345, 6666, 6666]
|
|
, lint32 = [-12345, 12345, 6666, -6666, -4000000000, 66666666]
|
|
, luint32 = [12345, 12345, 6666, 6666, 4000000000, 66666666]
|
|
, lint64 = [-12345, 12345, -6666, 6666, 400000000000, -66666666666666666]
|
|
, luint64 = [12345, 12345, 6666, 6666, 400000000000, 66666666666666666]
|
|
, linte8 = [123, 12, -66, 66, 34]
|
|
, linte16 = [12334, 12, -6666, 6666, 3412]
|
|
, linte32 = [12334, 12, -666666666, 6666, 3412]
|
|
, linte64 = [12334, 12, -666666666666, 6666, 3412]
|
|
, lnum8 = [123, 12.123, -66.456789, 66, 34]
|
|
, lnum16 = [12334, -12, -6666.6666, 6666, 3412]
|
|
, lnum32 = [12334, 12.7777, -666666666.666777, 6666, 3412]
|
|
, lnum64 = [12334, 12, -666666666666.88888, 6666, 3412.9999]
|
|
, lnfloat32 = [-666666.88888, 4434.434, 434.43, 3434]
|
|
, lnfloat64 = [-666666666666.88888, 4434.434, 434.43, 11111111111.34343, 5566]
|
|
, lfloat = [1.1, 2.2, 3.3, 666666.666]
|
|
, ldouble = [111111111.1, 22222222.2, 3.3, 66666622333333.666]
|
|
, lstring = ["fdsafsdfsfs", "电风扇打法胜多负少的", <<"fdsfasdfsfs">>, <<"大丰收大丰收的方式"/utf8>>]
|
|
, lunion = [#union{}, #union{type = 1, test = "aaaaa"}, #union{type = 2, test = "嘿嘿嘿嘿"}]
|
|
},
|
|
%List = protoMsg:encode(AllType),
|
|
tall(N, term_to_binary(AllType)).
|
|
|
|
tall(0, Bin) ->
|
|
Bin;
|
|
tall(N, Bin) ->
|
|
%protoMsg:decode(Bin),
|
|
binary_to_term(Bin),
|
|
tall(N - 1, Bin).
|
|
|
|
|
|
hh1(0) ->
|
|
ok;
|
|
hh1(N) ->
|
|
A = [tt1, tt2, tt3, tt4, {tet, tt1}, {tet, tt2}, {tet, tt3}, yyy],
|
|
test(A),
|
|
hh1(N - 1).
|
|
|
|
hh2(0) ->
|
|
ok;
|
|
hh2(N) ->
|
|
A = [tt1, tt2, tt3, tt4, {tet, tt1}, {tet, tt2}, {tet, tt3}, yyy],
|
|
tet(A),
|
|
hh2(N - 1).
|
|
|
|
test([]) ->
|
|
ok;
|
|
test([A | T]) ->
|
|
case A of
|
|
tt1 ->
|
|
ok;
|
|
tt2 ->
|
|
ok;
|
|
tt3 ->
|
|
ok;
|
|
tt4 ->
|
|
ok;
|
|
{tet, tt1} ->
|
|
ok;
|
|
{tet, tt2} ->
|
|
ok;
|
|
{tet, tt3} ->
|
|
ok;
|
|
_ ->
|
|
ok
|
|
end,
|
|
test(T).
|
|
|
|
|
|
tet([]) ->
|
|
ok;
|
|
tet([tt1 | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([tt2 | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([tt3 | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([tt4 | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([{tet, tt1} | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([{tet, tt2} | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([{tet, tt3} | T]) ->
|
|
ok,
|
|
tet(T);
|
|
tet([YY | T]) ->
|
|
ok,
|
|
tet(T).
|
|
|
|
ttt11(N) ->
|
|
Add = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "123456789"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "01234567890"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
ttt11(N, Add).
|
|
|
|
ttt11(0, Add) ->
|
|
ok;
|
|
ttt11(N, Add) ->
|
|
protoMsg:encode(Add),
|
|
ttt11(N - 1, Add).
|
|
|
|
%%tt1(Add) ->
|
|
%"others" => [
|
|
% #{
|
|
% "name" => "Carol",
|
|
% "id" => 30000,
|
|
% "phone" => [
|
|
% #{ "number" => #{"aa" => "9876543210"} }
|
|
% ]
|
|
% }
|
|
%]
|
|
%AddressBook = #person{name = "1232134", id = 11111,email = "aaa" ,phone = [#phoneNumber{}] },
|
|
%AddressBook = #phoneNumber{number =#test{aa = "dffsaf"},type = 12 },
|
|
%%protoMsg:encode(Add).
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
%Bin = protoCode:encode(AddressBook),
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
%MsgId = protoMsg:getMsgId(element(1, AddressBook)),
|
|
%<<MsgId:16/little, Bin/binary>>.
|
|
|
|
|
|
tt(N) ->
|
|
AddressBook = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "123456789"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "01234567890"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
%"others" => [
|
|
% #{
|
|
% "name" => "Carol",
|
|
% "id" => 30000,
|
|
% "phone" => [
|
|
% #{ "number" => #{"aa" => "9876543210"} }
|
|
% ]
|
|
% }
|
|
%]
|
|
%AddressBook = #person{name = "1232134", id = 11111,email = "aaa" ,phone = [#phoneNumber{}] },
|
|
%AddressBook = #phoneNumber{number =#test{aa = "dffsaf"},type = 12 },
|
|
Bin = protoMsg:encode(AddressBook),
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
tt(N, iolist_to_binary(Bin)).
|
|
tt(0, Bin) ->
|
|
protoMsg:decode(Bin);
|
|
tt(N, Bin) ->
|
|
protoMsg:decode(Bin),
|
|
tt(N - 1, Bin).
|
|
|
|
|
|
%{Len, List, RestBin} = protoMsg("AddressBook", Bin),
|
|
%io:format("Len:~p, RestBin:~p~n", [Len, RestBin]),
|
|
%io:format("List:~p~n", [List]),
|
|
%{Map, _, _} = sproto:decode2("AddressBook", Bin),
|
|
%Map.
|
|
|
|
|
|
ttt1(0) ->
|
|
AddressBook = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "你好啊 嘿嘿"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "范德萨地方范德萨发"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
term_to_binary(AddressBook);
|
|
ttt1(N) ->
|
|
ttt1(),
|
|
ttt1(N - 1).
|
|
|
|
ttt1() ->
|
|
AddressBook = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "你好啊 嘿嘿"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "范德萨地方范德萨发"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
%"others" => [
|
|
% #{
|
|
% "name" => "Carol",
|
|
% "id" => 30000,
|
|
% "phone" => [
|
|
% #{ "number" => #{"aa" => "9876543210"} }
|
|
% ]
|
|
% }
|
|
%]
|
|
%AddressBook = #person{name = "1232134", id = 11111,email = "aaa" ,phone = [#phoneNumber{}] },
|
|
%AddressBook = #phoneNumber{number =#test{aa = "dffsaf"},type = 12 },
|
|
Bin = term_to_binary(AddressBook).
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
%Bin = protoCode:encode(AddressBook),
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
%MsgId = protoMsg:getMsgId(element(1, AddressBook)),
|
|
%<<MsgId:16/little, Bin/binary>>.
|
|
|
|
|
|
ttt(N) ->
|
|
AddressBook = #addressBook{
|
|
person = [
|
|
#person{
|
|
name = "Alice",
|
|
id = 10000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "123456789"}, type = 1},
|
|
#phoneNumber{number = #test{aa = "87654321"}, type = 2}
|
|
]
|
|
},
|
|
#person{
|
|
name = "Bob",
|
|
id = 20000,
|
|
phone = [
|
|
#phoneNumber{number = #test{aa = "01234567890"}, type = 3}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
%"others" => [
|
|
% #{
|
|
% "name" => "Carol",
|
|
% "id" => 30000,
|
|
% "phone" => [
|
|
% #{ "number" => #{"aa" => "9876543210"} }
|
|
% ]
|
|
% }
|
|
%]
|
|
%AddressBook = #person{name = "1232134", id = 11111,email = "aaa" ,phone = [#phoneNumber{}] },
|
|
%AddressBook = #phoneNumber{number =#test{aa = "dffsaf"},type = 12 },
|
|
%ok = file:write_file("fff.bin", Bin),
|
|
%print_bin(Bin),
|
|
ttt(N, term_to_binary(AddressBook)).
|
|
ttt(0, Bin) ->
|
|
binary_to_term(Bin);
|
|
ttt(N, Bin) ->
|
|
binary_to_term(Bin),
|
|
ttt(N - 1, Bin).
|
|
|
|
print_bin(Bin) ->
|
|
ByteList = lists:reverse(bin_to_hex(Bin, [])),
|
|
Fun = fun(Byte, Acc) ->
|
|
io:format("~2.16.0b ", [Byte]),
|
|
case Acc rem 8 =:= 0 of
|
|
true -> io:format("~n", []);
|
|
false -> ok
|
|
end,
|
|
Acc + 1
|
|
end,
|
|
lists:foldl(Fun, 1, ByteList),
|
|
io:format("bytes:~p~n", [byte_size(Bin)]).
|
|
|
|
bin_to_hex(<<>>, Acc) ->
|
|
Acc;
|
|
bin_to_hex(Bin, Acc) ->
|
|
<<A:8, Bin2/binary>> = Bin,
|
|
bin_to_hex(Bin2, [A | Acc]).
|
|
|
|
a1(B) ->
|
|
Bin = list_to_binary([X rem 256 || X <- lists:seq(1, 10000)]),
|
|
a1(B, Bin).
|
|
|
|
a1(0, Bin) ->
|
|
<<ListBin:6400/big-binary, Left/binary>> = Bin,
|
|
[X || <<X:32/big-unsigned>> <= ListBin];
|
|
a1(N, Bin) ->
|
|
<<ListBin:6400/big-binary, Left/binary>> = Bin,
|
|
A = [X || <<X:32/big-unsigned>> <= ListBin],
|
|
B = [X || <<X:16/big-unsigned>> <= ListBin],
|
|
io:format("IMY********** ~p~n", [A == B]),
|
|
a1(N - 1, Bin).
|
|
|
|
a2(B) ->
|
|
Bin = list_to_binary([X rem 256 || X <- lists:seq(1, 10000)]),
|
|
a2(B, Bin).
|
|
|
|
a2(0, Bin) ->
|
|
Len = 200,
|
|
<<ListBin:Len/big-binary-unit:32, Left/binary>> = Bin,
|
|
[X || <<X:32/big-unsigned>> <= ListBin];
|
|
a2(N, Bin) ->
|
|
Len = 200,
|
|
<<ListBin:Len/big-binary-unit:32, Left/binary>> = Bin,
|
|
[X || <<X:32/big-unsigned>> <= ListBin],
|
|
a2(N - 1, Bin).
|