1. ホーム
  2. javascript

[解決済み] 文字列をバイト配列に変換する方法

2022-11-28 01:15:51

質問

JavaScriptで文字列をbytearrayに変換するにはどうしたらよいでしょうか。出力は以下のC#のコードと同等である必要があります。

UnicodeEncoding encoding = new UnicodeEncoding();
byte[] bytes = encoding.GetBytes(AnyString);

UnicodeEncodingはデフォルトでLittle-EndiannessのUTF-16であるため。

編集してください。 私は、上記のC#コードを使用してサーバー側で生成されたものと、クライアント側で生成されたbytearrayを一致させる要件があります。

どのように解決するのですか?

C#でこれを実行すると

UnicodeEncoding encoding = new UnicodeEncoding();
byte[] bytes = encoding.GetBytes("Hello");

という配列が作成されます。

72,0,101,0,108,0,108,0,111,0

<イグ

コードが255より大きい文字については、次のようになります。

JavaScript で非常に似た動作をさせたい場合は、次のようにします (v2 はもう少し堅牢なソリューションで、オリジナル版は 0x00 ~ 0xff に対してのみ動作します)。

var str = "Hello竜";
var bytes = []; // char codes
var bytesv2 = []; // char codes

for (var i = 0; i < str.length; ++i) {
  var code = str.charCodeAt(i);
  
  bytes = bytes.concat([code]);
  
  bytesv2 = bytesv2.concat([code & 0xff, code / 256 >>> 0]);
}

// 72, 101, 108, 108, 111, 31452
console.log('bytes', bytes.join(', '));

// 72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 220, 122
console.log('bytesv2', bytesv2.join(', '));