@@ -15,17 +15,29 @@ function encode(bytearray) {
15
15
return result . join ( '' ) ;
16
16
}
17
17
18
- var sample = 'This is an encoded string' . split ( '' ) . map ( function ( character ) { return character . charCodeAt ( ) ; } ) ;
19
- console . log ( encode ( sample ) ) ;
20
-
21
- var ex1 = [ 49 , 50 , 51 , 97 , 98 ] ;
22
- var ex2 = [ 49 ] ;
23
- var ex3 = [ 49 , 50 , 51 , 100 ] ;
24
-
25
- console . log ( encode ( ex1 ) ) ;
26
- console . log ( encode ( ex2 ) ) ;
27
- console . log ( encode ( ex3 ) ) ;
28
-
29
18
function decode ( basehangulString ) {
30
- // TODO
19
+ var baseData = basehangulString . split ( '' ) . map ( function ( character ) { return ksx1001_1028 . indexOf ( character ) ; } ) ;
20
+ var len = baseData . length ;
21
+ var a , b , c , d , result = [ ] ;
22
+ for ( var i = 0 ; i < len ; ++ i ) {
23
+ a = baseData [ i ] ; b = baseData [ ++ i ] ; c = baseData [ ++ i ] ; d = baseData [ ++ i ] ;
24
+ result . push ( ( a >> 2 ) & 255 ) ;
25
+ if ( b === - 1 ) break ;
26
+ result . push ( ( a & 3 ) << 6 | b >> 4 ) ;
27
+ if ( b === - 1 ) break ;
28
+ result . push ( ( b & 15 ) << 4 | c >> 6 ) ;
29
+ if ( c === - 1 ) break ;
30
+ result . push ( ( c & 63 ) << 2 | ( d > 1023 ? d & 3 : d >> 8 ) ) ;
31
+ if ( d === - 1 || d > 1023 ) break ;
32
+ result . push ( d & 255 ) ;
33
+ }
34
+ return result ;
31
35
}
36
+
37
+ console . log ( decode ( encode ( [ 49 , 50 , 51 , 97 , 98 ] ) ) ) ;
38
+ console . log ( decode ( encode ( [ 49 ] ) ) ) ;
39
+ console . log ( decode ( encode ( [ 49 , 50 , 51 , 100 ] ) ) ) ;
40
+
41
+ console . log ( decode ( '넥라똔먈늴멥갯놓궂뗐밸뮤뉴뗐뀄굡덜멂똑뚤' ) . map ( function ( byte ) {
42
+ return String . fromCharCode ( byte ) ;
43
+ } ) . join ( '' ) ) ;
0 commit comments