aboutsummaryrefslogtreecommitdiff
path: root/ber/len.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-08-09 13:47:34 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-08-09 13:47:34 +0200
commit993e9c8138699a08379711d6e071e9365b6edaf0 (patch)
treee1523d0073548ed225e95b1ee02506e0f0ea0507 /ber/len.go
parentbd2a9d7540b13f6a3edc748d5e91e267b1b03d41 (diff)
Add len marshaling
Diffstat (limited to 'ber/len.go')
-rw-r--r--ber/len.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/ber/len.go b/ber/len.go
index 5e0232c..dffb1df 100644
--- a/ber/len.go
+++ b/ber/len.go
@@ -10,3 +10,15 @@ func UnmarshalLen(b []byte) (i, n int) {
}
return i, n + 1
}
+
+func MarshalLen(i int) (b []byte) {
+ if i < 0x80 {
+ b = append(b, byte(i))
+ return
+ }
+ for n := intLen(i); n > 0; n-- {
+ b = append(b, byte(i>>uint((n-1)*8)))
+ }
+ b = append([]byte{byte(len(b) | 0x80)}, b...)
+ return
+}