1
1
address 0x2 {
2
2
module Base64 {
3
3
use 0x1::Vector ;
4
-
4
+ use 0x1:: Debug ;
5
5
public fun encode (str:vector <u8 >):vector <u8>{
6
6
if (Vector::is_empty (&str)){
7
7
return Vector::empty <u8 >()
8
8
};
9
9
let size = Vector::length (& str);
10
-
11
10
let len64 = if (size % 3 == 0 ) {
12
11
(size/3 *4 )
13
12
}
14
13
else {
15
14
(size/3 +1 )*4
16
15
};
17
16
let str_buf = str;
17
+
18
18
Vector::push_back (&mut str_buf,0 );
19
19
let base64_table = Vector::empty <u8 >();
20
20
let big_word = 65 ;
@@ -36,13 +36,15 @@ address 0x2 {
36
36
Vector::push_back (&mut res,0 );
37
37
l = l + 1 ;
38
38
};
39
+
39
40
let m = 0 ;
40
41
let n = 0 ;
41
42
while (m < len64 - 2 ){
42
- *Vector::borrow_mut (&mut res,m) = *Vector::borrow (& base64_table,((*Vector::borrow (&str_buf,n) >> 2 ) as u64 ));
43
+ *Vector::borrow_mut (&mut res,m) = *Vector::borrow (& base64_table,((*Vector::borrow (&str_buf,n) >> 2 ) as u64 ));
43
44
*Vector::borrow_mut (&mut res,m + 1 ) = *Vector::borrow (& base64_table,((((*Vector::borrow (&str_buf,n) & 3 ) << 4 ) | (*Vector::borrow (&str_buf,n + 1 ) >> 4 ) )as u64 ));
44
45
*Vector::borrow_mut (&mut res,m + 2 ) = *Vector::borrow (& base64_table,((((*Vector::borrow (&str_buf,n + 1 ) & 15 ) << 2 ) | (*Vector::borrow (&str_buf,n + 2 ) >> 6 ))as u64 ));
45
- *Vector::borrow_mut (&mut res,m + 3 ) = *Vector::borrow (& base64_table,(((*Vector::borrow (&str_buf,n + 2 ) & 63 ) << 2 )as u64 ));
46
+ *Vector::borrow_mut (&mut res,m + 3 ) = *Vector::borrow (& base64_table,(((*Vector::borrow (&str_buf,n + 2 ) & 63 ))as u64 ));
47
+
46
48
m = m + 4 ;
47
49
n = n + 3 ;
48
50
};
@@ -53,6 +55,7 @@ address 0x2 {
53
55
else if (size % 3 == 2 ){
54
56
*Vector::borrow_mut (&mut res,m - 1 ) = eq;
55
57
};
58
+
56
59
return res
57
60
}
58
61
}
0 commit comments