2017-11-10 41 views
0

Python 3では、文字列を一連のバイトに変換するために、String.encode(ENCODING)を使用します。ここで、ENCODINGは使用するエンコーディングの名前です。文字列中に255より大きいコードポイントを持つ文字がある場合、それはまだバイト配列に変換されます。これは、暗号のデモのような文字列を操作する必要がある場合に便利です。テキストはByteArray.decode(ENCODING)を使用して再構成できます。JavaScriptの文字列をバイトシーケンスに変換するにはどうすればよいですか?

JavaScriptについては、これまでと同じようなことはありませんでした。 String.charCodeAt()がありますが、これはĀのような文字を256に変換します。それは私が望むものではありません。あなたが標準FileReaderと直接バイトを読み取ることができ

+0

https://stackoverflow.com/questions/6226189/how-to-convert-a-string-to-bytearray –

答えて

0

:おそらく:

var str = "Āabc"; 
var b = new Blob([str], {type:"text/plain"}); 
var f = new FileReader(); 
f.addEventListener("loadend", function(){ 
    console.log(new Uint8Array(f.result)); // [196, 128, 97, 98, 99] 
}); 
f.readAsArrayBuffer(b); 
+0

私はファイルを使用していません。 – Melab

+0

@Melabコード内の 'FileReader'は、ファイルではなく、ブロブを読み込みます。コードを詳しく見てください。 –

1

をあなたは "のための...暗号文字列を操作する" TextEncoder().encode()TextDecoder().decode()方法

let decoder = new TextDecoder(/* character encoding */); 
let encoder = new TextEncoder(); 

let encoded = encoder.encode(str); 
let decoded = decoder.decode(encoded); 
+0

[Encoding](https://encoding.spec.whatwg.org/) – guest271314

0

を使用することができますない。

暗号はバイト配列の数学的変換です。暗号化の結果はテキストではないため、文字列に直接格納することはできません。

JavaScript文字列は、UTF-16コード単位のカウントされたシーケンスです。 (VB4/5/6、VB、VBA、VBScript、C#、Javaなどにも適用されます。)UTF-16は、Unicode文字セットのいくつかのエンコーディングの1つです。 UTF-8は別のものです。どちらも、任意のバイナリデータからエンコード/デコードしません。

String.charCodeAt()と記載しました。これにより、文字列からUTF-16コード単位の1つが得られます。

バイナリデータを文字列にして表示する一般的な方法は、Base64と16進数です。送信者と受信者は、文字列の文字エンコーディングとバイナリからテキストへの変換の両方に同意する必要がありますが、多くのシステムではバイナリよりもテキストを渡す方が少し重いです。

+0

を参照してください。私は暗号操作が文字列で直接実行されないことを知っています。だから、私は文字列とバイト配列を変換しようとしています。結果は、Latin-1エンコーディングを使って、Python 3の文字列として確実に格納することができます。 – Melab

+0

さて、JavaScript文字列はUTF-16です。だから、Latin1のようにバイトを変換して文字列に格納したいのですか? –

関連する問題