3 code.google.com/p/crypto-js
4 (c) 2009-2013 by Jeff Mott. All rights reserved.
5 code.google.com/p/crypto-js/wiki/License
11 var WordArray = C_lib.WordArray;
15 * UTF-16 BE encoding strategy.
17 var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
19 * Converts a word array to a UTF-16 BE string.
21 * @param {WordArray} wordArray The word array.
23 * @return {string} The UTF-16 BE string.
29 * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
31 stringify: function (wordArray) {
33 var words = wordArray.words;
34 var sigBytes = wordArray.sigBytes;
38 for (var i = 0; i < sigBytes; i += 2) {
39 var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;
40 utf16Chars.push(String.fromCharCode(codePoint));
43 return utf16Chars.join('');
47 * Converts a UTF-16 BE string to a word array.
49 * @param {string} utf16Str The UTF-16 BE string.
51 * @return {WordArray} The word array.
57 * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
59 parse: function (utf16Str) {
61 var utf16StrLength = utf16Str.length;
65 for (var i = 0; i < utf16StrLength; i++) {
66 words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);
69 return WordArray.create(words, utf16StrLength * 2);
74 * UTF-16 LE encoding strategy.
78 * Converts a word array to a UTF-16 LE string.
80 * @param {WordArray} wordArray The word array.
82 * @return {string} The UTF-16 LE string.
88 * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
90 stringify: function (wordArray) {
92 var words = wordArray.words;
93 var sigBytes = wordArray.sigBytes;
97 for (var i = 0; i < sigBytes; i += 2) {
98 var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);
99 utf16Chars.push(String.fromCharCode(codePoint));
102 return utf16Chars.join('');
106 * Converts a UTF-16 LE string to a word array.
108 * @param {string} utf16Str The UTF-16 LE string.
110 * @return {WordArray} The word array.
116 * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
118 parse: function (utf16Str) {
120 var utf16StrLength = utf16Str.length;
124 for (var i = 0; i < utf16StrLength; i++) {
125 words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));
128 return WordArray.create(words, utf16StrLength * 2);
132 function swapEndian(word) {
133 return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);