Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
colorEagleStdio
taskbus_course
提交
ea2124c5
taskbus_course
项目概览
colorEagleStdio
/
taskbus_course
通知
28
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
taskbus_course
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ea2124c5
编写于
7月 01, 2023
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1. 头部添加校验和
2. 四路合并处理
上级
30be1cb0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
215 addition
and
145 deletion
+215
-145
src/a1frame_decap/main.cpp
src/a1frame_decap/main.cpp
+189
-135
src/a1frame_encap/main.cpp
src/a1frame_encap/main.cpp
+26
-10
未找到文件。
src/a1frame_decap/main.cpp
浏览文件 @
ea2124c5
...
...
@@ -6,8 +6,9 @@
#include <ctime>
#include <cmath>
#include <string>
#include <unordered_set>
#include <QTextStream>
#include <memory>
#include <unordered_set>
#include "clsm_viterbi.h"
#include "conv_lsm_codec.h"
#include "cmdlineparser.h"
...
...
@@ -17,7 +18,7 @@ const int OFFLINEDEBUG = 0;
const
int
VIT_WINLEN
=
64
;
//处理逻辑
int
do_function
(
const
cmdlineParser
&
args
);
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
alg_decap
(
const
std
::
vector
<
unsigned
char
>
&
bits
,
void
*
codec
,
int
bais
);
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
alg_decap
(
const
std
::
vector
<
unsigned
char
>
&
bits
,
void
*
codec
);
//全局的终止标记
static
bool
bfinished
=
false
;
using
namespace
std
;
...
...
@@ -34,7 +35,7 @@ int main(int argc , char * argv[])
else
{
FILE
*
old_stdin
,
*
old_stdout
;
auto
ars
=
debug
(
"D:/projects/pid
6300
"
,
&
old_stdin
,
&
old_stdout
);
auto
ars
=
debug
(
"D:/projects/pid
5596
"
,
&
old_stdin
,
&
old_stdout
);
args
.
parser
(
ars
);
}
...
...
@@ -101,41 +102,15 @@ int do_function(const cmdlineParser & args)
}
else
if
(
header
.
subject_id
==
sub_input
&&
packagedta
.
size
())
{
std
::
unordered_set
<
unsigned
int
>
set_output
;
//4倍速采样起点,每个试一下
for
(
int
i
=
0
;
i
<
4
;
++
i
)
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
res
=
alg_decap
(
packagedta
,
codec
);
if
(
sub_output
&&
res
.
size
())
{
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
res
=
alg_decap
(
packagedta
,
codec
,
i
);
if
(
sub_output
&&
res
.
size
())
for
(
int
n
=
0
;
n
<
res
.
size
();
++
n
)
{
for
(
int
n
=
0
;
n
<
res
.
size
();
++
n
)
if
(
res
[
n
].
size
()
>
4
)
{
if
(
res
[
n
].
size
()
>
4
)
{
const
int
rawsz
=
res
[
n
].
size
()
-
4
;
//Checksum
unsigned
int
vsum
=
0
;
unsigned
char
*
psum
=
(
unsigned
char
*
)
&
vsum
;
for
(
int
i
=
0
;
i
<
rawsz
;
++
i
)
{
unsigned
int
vl
=
(
vsum
>>
24
)
&
0xff
;
unsigned
int
vr
=
res
[
n
][
i
]
^
vl
;
vsum
<<=
8
;
vsum
^=
vr
;
}
if
(
res
[
n
][
rawsz
]
!=
psum
[
0
])
continue
;
if
(
res
[
n
][
rawsz
+
1
]
!=
psum
[
1
])
continue
;
if
(
res
[
n
][
rawsz
+
2
]
!=
psum
[
2
])
continue
;
if
(
res
[
n
][
rawsz
+
3
]
!=
psum
[
3
])
continue
;
if
(
set_output
.
find
(
vsum
)
!=
set_output
.
end
())
continue
;
set_output
.
insert
(
vsum
);
TASKBUS
::
push_subject
(
sub_output
,
instance
,
res
[
n
].
size
()
-
4
,
res
[
n
].
data
());
}
const
int
rawsz
=
res
[
n
].
size
()
-
4
;
TASKBUS
::
push_subject
(
sub_output
,
instance
,
res
[
n
].
size
()
-
4
,
res
[
n
].
data
());
}
}
}
...
...
@@ -160,11 +135,18 @@ int do_function(const cmdlineParser & args)
return
res
;
}
long
long
g_starts
[
4
]
=
{
0
,
0
,
0
,
0
};
QVector
<
long
long
>
cache_bits
[
4
];
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
alg_decap
(
const
std
::
vector
<
unsigned
char
>
&
packages
,
void
*
codec
,
int
bais
)
long
long
totalCaps
=
0
;
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
alg_decap
(
const
std
::
vector
<
unsigned
char
>
&
packages
,
void
*
codec
)
{
std
::
vector
<
std
::
vector
<
unsigned
char
>
>
res
;
static
std
::
shared_ptr
<
unsigned
char
>
deinterbits
[
4
]
{
std
::
shared_ptr
<
unsigned
char
>
(
new
unsigned
char
[
65536
*
3
*
8
+
21
]),
std
::
shared_ptr
<
unsigned
char
>
(
new
unsigned
char
[
65536
*
3
*
8
+
21
]),
std
::
shared_ptr
<
unsigned
char
>
(
new
unsigned
char
[
65536
*
3
*
8
+
21
]),
std
::
shared_ptr
<
unsigned
char
>
(
new
unsigned
char
[
65536
*
3
*
8
+
21
])
};
//unsigned char header[32] = {0,1,1,1,1,1,1,0, 0,0,1,1,0,1,0,1, 0,0,1,0,1,0,0,1, 1,1,0,1,0,1,0,1};
unsigned
char
header
[
32
]
=
{
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
};
//0. Append to cache
...
...
@@ -172,127 +154,199 @@ std::vector<std::vector<unsigned char> > alg_decap(const std::vector<unsigned ch
const
int
sym_total
=
packages
.
size
()
/
sizeof
(
long
long
)
/
4
;
for
(
int
i
=
0
;
i
<
sym_total
;
++
i
)
{
cache_bits
[
bais
].
push_back
(
pSyms
[
i
*
4
+
bais
]);
for
(
int
j
=
0
;
j
<
4
;
++
j
)
{
cache_bits
[
j
].
push_back
(
pSyms
[
i
*
4
+
j
]);
}
}
std
::
unordered_set
<
long
long
>
nResBs
;
//fprintf(stderr,"decap %d bits.",sym_total);
while
(
cache_bits
[
bais
].
size
())
for
(
int
bais
=
0
;
bais
<
4
;
++
bais
)
{
//1.Find header
int
nPos
=
0
;
int
nStart
=
-
1
;
int
Oppo
=
0
;
int
errb
=
0
;
while
(
nPos
+
64
<
cache_bits
[
bais
].
size
()
&&
nStart
<
0
)
//1. Batch deal
const
int
cacheSize
=
cache_bits
[
bais
].
size
();
const
long
long
*
pCache
=
cache_bits
[
bais
].
data
();
int
nStart
=
0
;
//fprintf(stderr,"decap %d bits.",sym_total);
while
(
nStart
<
cacheSize
)
{
errb
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
//1.Find header
int
Oppo
=
0
;
int
errb
=
0
;
int
H
=
0
;
bool
HitHead
=
false
;
if
(
nStart
+
32
*
2
<
cacheSize
)
{
int
bt
=
cache_bits
[
bais
][
nPos
+
i
*
2
]
>
cache_bits
[
bais
][
nPos
+
i
*
2
+
1
]
?
1
:
0
;
if
(
bt
!=
header
[
i
])
++
errb
;
errb
=
0
;
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
int
bt
=
pCache
[
nStart
+
i
*
2
]
>
pCache
[
nStart
+
i
*
2
+
1
]
?
1
:
0
;
if
(
bt
!=
header
[
i
])
++
errb
;
}
if
(
errb
==
0
||
errb
==
32
)
{
HitHead
=
true
;
Oppo
=
errb
<
3
?
0
:
1
;
}
else
{
++
nStart
;
continue
;
}
}
if
(
errb
==
0
||
errb
==
32
)
else
break
;
H
+=
64
;
//Hitted start
//2. Length 16 bits and checksum
//Length, protected by checksum
if
(
nStart
+
H
+
(
16
+
16
)
*
8
*
2
>=
cacheSize
)
break
;
unsigned
char
sprheader
[
2
][
8
]
=
{
{
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
},
{
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
}
};
unsigned
long
long
len
=
0
,
lencheck
=
0
;
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
nStart
=
nPos
;
Oppo
=
errb
<
3
?
0
:
1
;
int
p0
=
0
,
p1
=
0
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
int
b0
=
pCache
[
nStart
+
H
+
i
*
8
*
2
+
j
*
2
]
<
pCache
[
nStart
+
H
+
i
*
8
*
2
+
j
*
2
+
1
]
?
0
:
1
;
p0
+=
(
b0
==
((
sprheader
[
0
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
p1
+=
(
b0
==
((
sprheader
[
1
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
}
unsigned
int
b
=
p0
>=
p1
?
0
:
1
;
len
^=
(
b
<<
i
);
}
++
nPos
;
}
if
(
nStart
>=
0
)
cache_bits
[
bais
].
remove
(
0
,
nStart
);
else
if
(
nPos
>
2
)
{
//Delete
cache_bits
[
bais
].
remove
(
0
,
nPos
-
1
);
return
res
;
}
nStart
=
0
;
//fprintf(stderr,"Header Detected err = %d.",errb);
H
+=
16
*
8
*
2
;
//2. Length 16 bits
//Length, protected by coding spread 1:8,16bits:128bits
if
(
cache_bits
[
bais
].
size
()
<
(
16
*
8
+
32
)
*
2
)
return
res
;
unsigned
char
sprheader
[
2
][
8
]
=
{
{
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
},
{
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
}
};
unsigned
int
len
=
0
;
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
int
p0
=
0
,
p1
=
0
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
int
b0
=
cache_bits
[
bais
][
64
+
i
*
8
*
2
+
j
*
2
]
<
cache_bits
[
bais
][
64
+
i
*
8
*
2
+
j
*
2
+
1
]
?
0
:
1
;
p0
+=
(
b0
==
((
sprheader
[
0
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
p1
+=
(
b0
==
((
sprheader
[
1
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
int
p0
=
0
,
p1
=
0
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
int
b0
=
pCache
[
nStart
+
H
+
i
*
8
*
2
+
j
*
2
]
<
pCache
[
nStart
+
H
+
i
*
8
*
2
+
j
*
2
+
1
]
?
0
:
1
;
p0
+=
(
b0
==
((
sprheader
[
0
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
p1
+=
(
b0
==
((
sprheader
[
1
][
j
]
+
Oppo
)
%
2
))
?
1
:
0
;
}
unsigned
int
b
=
p0
>=
p1
?
0
:
1
;
lencheck
^=
(
b
<<
i
);
}
H
+=
16
*
8
*
2
;
if
(
len
>=
65536
||
lencheck
!=
len
*
1000427
%
65536
)
{
++
nStart
;
continue
;
}
unsigned
int
b
=
p0
>=
p1
?
0
:
1
;
len
^=
(
b
<<
i
);
}
if
(
len
>=
10000
)
{
cache_bits
[
bais
].
remove
(
0
,
nStart
+
64
);
continue
;
}
//fprintf(stderr,"Length = %u Bytes.",len);
const
int
bitlen
=
len
*
3
*
8
+
7
*
3
;
if
(
cache_bits
[
bais
].
size
()
<
(
bitlen
+
32
+
128
)
*
2
)
return
res
;
//Length Ok
const
int
bitlen
=
len
*
3
*
8
+
7
*
3
;
//3. decode
std
::
vector
<
int
>
code
;
const
int
valid_syms
=
len
*
8
+
7
;
for
(
int
i
=
0
;
i
<
valid_syms
+
VIT_WINLEN
;
++
i
)
{
int
v
=
0
;
if
(
i
<
valid_syms
)
if
(
nStart
+
bitlen
*
2
+
H
>=
cacheSize
)
break
;
if
(
nResBs
.
find
(
g_starts
[
bais
]
+
nStart
)
!=
nResBs
.
end
())
{
int
b1
=
((
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
0
)
*
2
]
<
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
0
)
*
2
+
1
])
?
0
:
1
)
^
Oppo
;
int
b2
=
((
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
1
)
*
2
]
<
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
1
)
*
2
+
1
])
?
0
:
1
)
^
Oppo
;
int
b3
=
((
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
2
)
*
2
]
<
cache_bits
[
bais
][(
32
+
128
)
*
2
+
(
i
*
3
+
2
)
*
2
+
1
])
?
0
:
1
)
^
Oppo
;
v
=
(
b1
<<
2
)
^
(
b2
<<
1
)
^
b3
;
nStart
+=
bitlen
*
2
+
H
;
continue
;
}
code
.
push_back
(
v
);
}
LSMVIT
::
reset_status
(
codec
);
LSMVIT
::
decode
(
codec
,
code
.
data
(),
code
.
size
(),
true
);
std
::
vector
<
int
>
data
;
data
.
resize
(
len
*
8
);
int
poped
=
LSMVIT
::
pop_data
(
codec
,
data
.
data
(),
len
*
8
);
int
bestHamm
=
LSMVIT
::
curr_best_hamming
(
codec
);
//fprintf(stderr,"Hamm = %d."
// ,LSMVIT::curr_best_hamming(codec));
//4. form data
if
(
poped
==
len
*
8
)
{
//Output
std
::
vector
<
unsigned
char
>
frame
;
//xor code
unsigned
char
scm
[
15
]
=
{
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
};
for
(
int
i
=
0
;
i
<
len
;
++
i
)
//DeInter
unsigned
char
*
deinterb
=
deinterbits
[
bais
].
get
();
for
(
long
long
i
=
0
;
i
<
bitlen
;
++
i
)
{
unsigned
char
Byte
=
0
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
int
b1
=
((
pCache
[
nStart
+
H
+
i
*
2
]
<
pCache
[
nStart
+
H
+
i
*
2
+
1
])
?
0
:
1
)
^
Oppo
;
deinterb
[
i
*
85535999
%
bitlen
]
=
b1
;
}
//3. decode
std
::
vector
<
int
>
code
;
const
int
valid_syms
=
len
*
8
+
7
;
for
(
int
i
=
0
;
i
<
valid_syms
+
VIT_WINLEN
;
++
i
)
{
int
v
=
0
;
if
(
i
<
valid_syms
)
{
const
int
ib
=
i
*
8
+
j
;
const
int
b
=
data
[
ib
];
//(input[i]>>j)&0x01;
const
int
d
=
b
^
scm
[
ib
%
15
];
scm
[
ib
%
15
]
^=
(
scm
[(
ib
+
13
)
%
15
]
^
scm
[(
ib
+
14
)
%
15
]);
Byte
^=
(
d
<<
j
);
int
b1
=
deinterb
[
i
*
3
+
0
];
int
b2
=
deinterb
[
i
*
3
+
1
];
int
b3
=
deinterb
[
i
*
3
+
2
];
v
=
(
b1
<<
2
)
^
(
b2
<<
1
)
^
b3
;
}
frame
.
push_back
(
Byte
);
code
.
push_back
(
v
);
}
res
.
push_back
(
std
::
move
(
frame
));
fprintf
(
stderr
,
"Decaped %d Bytes with hamm %d.
\n
"
,
len
,
bestHamm
);
LSMVIT
::
reset_status
(
codec
);
LSMVIT
::
decode
(
codec
,
code
.
data
(),
code
.
size
(),
true
);
std
::
vector
<
int
>
data
;
data
.
resize
(
len
*
8
);
int
poped
=
LSMVIT
::
pop_data
(
codec
,
data
.
data
(),
len
*
8
);
int
bestHamm
=
LSMVIT
::
curr_best_hamming
(
codec
);
// fprintf(stderr,"Hamm = %d."
// ,LSMVIT::curr_best_hamming(codec));
//4. form data
if
(
poped
==
len
*
8
)
{
//Output
std
::
vector
<
unsigned
char
>
frame
;
//xor code
unsigned
char
scm
[
15
]
=
{
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
};
for
(
int
i
=
0
;
i
<
len
;
++
i
)
{
unsigned
char
Byte
=
0
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
{
const
int
ib
=
i
*
8
+
j
;
const
int
b
=
data
[
ib
];
//(input[i]>>j)&0x01;
const
int
d
=
b
^
scm
[
ib
%
15
];
scm
[
ib
%
15
]
^=
(
scm
[(
ib
+
13
)
%
15
]
^
scm
[(
ib
+
14
)
%
15
]);
Byte
^=
(
d
<<
j
);
}
frame
.
push_back
(
Byte
);
}
//Checksum
const
int
rawsz
=
frame
.
size
()
-
4
;
//Checksum
unsigned
int
vsum
=
0
;
unsigned
char
*
psum
=
(
unsigned
char
*
)
&
vsum
;
for
(
int
i
=
0
;
i
<
rawsz
;
++
i
)
{
unsigned
int
vl
=
(
vsum
>>
24
)
&
0xff
;
unsigned
int
vr
=
frame
[
i
]
^
vl
;
vsum
<<=
8
;
vsum
^=
vr
;
}
if
(
frame
[
rawsz
]
==
psum
[
0
]
&&
frame
[
rawsz
+
1
]
==
psum
[
1
]
&&
frame
[
rawsz
+
2
]
==
psum
[
2
]
&&
frame
[
rawsz
+
3
]
==
psum
[
3
])
{
//fprintf(stderr,"Decaped %d Bytes with hamm %d.and Checksum OK\n",len,bestHamm);
res
.
push_back
(
std
::
move
(
frame
));
nResBs
.
insert
(
g_starts
[
bais
]
+
nStart
);
}
//else
//fprintf(stderr,"Decaped %d Bytes with hamm %d.But Checksum Bad\n",len,bestHamm);
}
H
+=
bitlen
*
2
;
nStart
+=
H
;
}
//end while cache size >0
if
(
nStart
)
{
cache_bits
[
bais
].
remove
(
0
,
nStart
);
g_starts
[
bais
]
+=
nStart
;
}
cache_bits
[
bais
].
remove
(
0
,(
bitlen
+
32
+
128
)
*
2
);
}
//end while cache size >0
}
//end for (int bais = 0; bais < 4;++bais)
fflush
(
stderr
);
return
res
;
}
src/a1frame_encap/main.cpp
浏览文件 @
ea2124c5
...
...
@@ -116,6 +116,7 @@ int do_function(const cmdlineParser & args)
return
res
;
}
static
long
long
total_packs
=
0
;
std
::
vector
<
unsigned
char
>
alg_encap
(
const
std
::
vector
<
unsigned
char
>
&
inputData
)
{
...
...
@@ -152,7 +153,7 @@ std::vector<unsigned char> alg_encap(const std::vector<unsigned char> & inputDat
//2. Length 16 bits
//Length, protected by coding spread 1:8,16bits:128bits
unsigned
int
len
=
input
.
size
();
unsigned
long
long
len
=
input
.
size
();
if
(
len
>=
65536
)
return
err
;
unsigned
char
sprheader
[
2
][
8
]
=
{
...
...
@@ -165,9 +166,17 @@ std::vector<unsigned char> alg_encap(const std::vector<unsigned char> & inputDat
for
(
int
j
=
0
;
j
<
8
;
++
j
)
vec_bits
.
push_back
(
sprheader
[
b
][
j
]);
}
//Checksum for length
unsigned
long
long
len_check
=
len
*
1000427
%
65536
;
for
(
int
i
=
0
;
i
<
16
;
++
i
)
{
const
int
b
=
(
len_check
>>
i
)
&
0x01
;
for
(
int
j
=
0
;
j
<
8
;
++
j
)
vec_bits
.
push_back
(
sprheader
[
b
][
j
]);
}
//3. Data, 1/3 conv code OCT 165,133,171
unsigned
char
reg
[
6
]
=
{
0
,
0
,
0
,
0
,
0
,
0
};
std
::
vector
<
unsigned
char
>
vec_info
;
//xor code
unsigned
char
scm
[
15
]
=
{
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
};
for
(
int
i
=
0
;
i
<
len
;
++
i
)
...
...
@@ -179,9 +188,9 @@ std::vector<unsigned char> alg_encap(const std::vector<unsigned char> & inputDat
const
int
c
=
b
^
scm
[
ib
%
15
];
scm
[
ib
%
15
]
^=
(
scm
[(
ib
+
13
)
%
15
]
^
scm
[(
ib
+
14
)
%
15
]);
vec_
bits
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
3
]
^
reg
[
5
]);
vec_
bits
.
push_back
(
c
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
4
]
^
reg
[
5
]);
vec_
bits
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
3
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
4
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
5
]);
reg
[
5
]
=
reg
[
4
];
reg
[
4
]
=
reg
[
3
];
...
...
@@ -195,9 +204,9 @@ std::vector<unsigned char> alg_encap(const std::vector<unsigned char> & inputDat
for
(
int
i
=
0
;
i
<
7
;
++
i
)
{
const
int
c
=
0
;
vec_
bits
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
3
]
^
reg
[
5
]);
vec_
bits
.
push_back
(
c
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
4
]
^
reg
[
5
]);
vec_
bits
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
3
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
4
]
^
reg
[
5
]);
vec_
info
.
push_back
(
c
^
reg
[
0
]
^
reg
[
1
]
^
reg
[
2
]
^
reg
[
5
]);
reg
[
5
]
=
reg
[
4
];
reg
[
4
]
=
reg
[
3
];
reg
[
3
]
=
reg
[
2
];
...
...
@@ -206,8 +215,15 @@ std::vector<unsigned char> alg_encap(const std::vector<unsigned char> & inputDat
reg
[
0
]
=
c
;
}
fprintf
(
stderr
,
"Encaped %d bytes.
\n
"
,
input
.
size
());
//Interleaver
const
int
sizev
=
vec_info
.
size
();
assert
(
sizev
==
len
*
3
*
8
+
7
*
3
);
for
(
long
long
i
=
0
;
i
<
sizev
;
++
i
)
{
vec_bits
.
push_back
(
vec_info
[
i
*
85535999
%
sizev
]);
}
if
(
++
total_packs
%
100
==
0
)
fprintf
(
stderr
,
"Encaped %lld caps.
\n
"
,
total_packs
);
return
vec_bits
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录