Skip to content

Commit d6c183a

Browse files
committed
修复Base64 的第四字节错误
1 parent d39317d commit d6c183a

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/build
2+
/storage

modules/Base64.move src/modules/Base64.move

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
address 0x2 {
22
module Base64{
33
use 0x1::Vector;
4-
4+
use 0x1::Debug;
55
public fun encode(str:vector<u8>):vector<u8>{
66
if(Vector::is_empty(&str)){
77
return Vector::empty<u8>()
88
};
99
let size = Vector::length(& str);
10-
1110
let len64 = if(size % 3 == 0) {
1211
(size/3*4)
1312
}
1413
else{
1514
(size/3+1)*4
1615
};
1716
let str_buf = str;
17+
1818
Vector::push_back(&mut str_buf,0);
1919
let base64_table = Vector::empty<u8>();
2020
let big_word = 65;
@@ -36,13 +36,15 @@ address 0x2 {
3636
Vector::push_back(&mut res,0);
3737
l = l + 1;
3838
};
39+
3940
let m = 0 ;
4041
let n = 0 ;
4142
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));
4344
*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));
4445
*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+
4648
m = m + 4;
4749
n = n + 3;
4850
};
@@ -53,6 +55,7 @@ address 0x2 {
5355
else if(size % 3 == 2){
5456
*Vector::borrow_mut(&mut res,m - 1) = eq;
5557
};
58+
5659
return res
5760
}
5861
}
File renamed without changes.

scripts/TestBase64.move src/scripts/TestBase64.move

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ script {
88
let str = Vector::empty<u8>();
99
Vector::push_back(&mut str,66);
1010
Vector::push_back(&mut str,114);
11+
Vector::push_back(&mut str,100);
1112
Debug::print(&Base64::encode(str));
1213
}
1314
}

0 commit comments

Comments
 (0)