Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
74bc4511
Commit
74bc4511
authored
Dec 29, 2013
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Encoding helpers with tests
parent
a1c5d5ac
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
96 additions
and
0 deletions
+96
-0
encoding.go
encoding.go
+46
-0
encoding_test.go
encoding_test.go
+50
-0
No files found.
encoding.go
0 → 100644
View file @
74bc4511
package
main
import
(
"bytes"
"encoding/hex"
"strings"
)
func
CompactEncode
(
hexSlice
[]
int
)
string
{
terminator
:=
0
if
hexSlice
[
len
(
hexSlice
)
-
1
]
==
16
{
terminator
=
1
}
if
terminator
==
1
{
hexSlice
=
hexSlice
[
:
len
(
hexSlice
)
-
1
]
}
oddlen
:=
len
(
hexSlice
)
%
2
flags
:=
2
*
terminator
+
oddlen
if
oddlen
!=
0
{
hexSlice
=
append
([]
int
{
flags
},
hexSlice
...
)
}
else
{
hexSlice
=
append
([]
int
{
flags
,
0
},
hexSlice
...
)
}
var
buff
bytes
.
Buffer
for
i
:=
0
;
i
<
len
(
hexSlice
);
i
+=
2
{
buff
.
WriteByte
(
byte
(
16
*
hexSlice
[
i
]
+
hexSlice
[
i
+
1
]))
}
return
buff
.
String
()
}
func
CompactHexDecode
(
str
string
)
[]
int
{
base
:=
"0123456789abcdef"
hexSlice
:=
make
([]
int
,
0
)
enc
:=
hex
.
EncodeToString
([]
byte
(
str
))
for
_
,
v
:=
range
enc
{
hexSlice
=
append
(
hexSlice
,
strings
.
IndexByte
(
base
,
byte
(
v
)))
}
hexSlice
=
append
(
hexSlice
,
16
)
return
hexSlice
}
encoding_test.go
0 → 100644
View file @
74bc4511
package
main
import
(
"testing"
"fmt"
)
func
TestCompactEncode
(
t
*
testing
.
T
)
{
test1
:=
[]
int
{
1
,
2
,
3
,
4
,
5
}
if
res
:=
CompactEncode
(
test1
);
res
!=
"
\x11\x23\x45
"
{
t
.
Error
(
fmt
.
Sprintf
(
"even compact encode failed. Got: %q"
,
res
))
}
test2
:=
[]
int
{
0
,
1
,
2
,
3
,
4
,
5
}
if
res
:=
CompactEncode
(
test2
);
res
!=
"
\x00\x01\x23\x45
"
{
t
.
Error
(
fmt
.
Sprintf
(
"odd compact encode failed. Got: %q"
,
res
))
}
test3
:=
[]
int
{
0
,
15
,
1
,
12
,
11
,
8
,
/*term*/
16
}
if
res
:=
CompactEncode
(
test3
);
res
!=
"
\x20\x0f\x1c\xb8
"
{
t
.
Error
(
fmt
.
Sprintf
(
"odd terminated compact encode failed. Got: %q"
,
res
))
}
test4
:=
[]
int
{
15
,
1
,
12
,
11
,
8
,
/*term*/
16
}
if
res
:=
CompactEncode
(
test4
);
res
!=
"
\x3f\x1c\xb8
"
{
t
.
Error
(
fmt
.
Sprintf
(
"even terminated compact encode failed. Got: %q"
,
res
))
}
}
// Helper function for comparing slices
func
CompareIntSlice
(
a
,
b
[]
int
)
bool
{
if
len
(
a
)
!=
len
(
b
)
{
return
false
}
for
i
,
v
:=
range
a
{
if
v
!=
b
[
i
]
{
return
false
}
}
return
true
}
func
TestCompactHexDecode
(
t
*
testing
.
T
)
{
exp
:=
[]
int
{
7
,
6
,
6
,
5
,
7
,
2
,
6
,
2
,
16
}
res
:=
CompactHexDecode
(
"verb"
)
if
!
CompareIntSlice
(
res
,
exp
)
{
t
.
Error
(
"Error compact hex decode. Expected"
,
exp
,
"got"
,
res
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment