昨日私は質問Algorithm to create costum Template/Code from Stringを読んだ。質問がうまく定式化されていなかったので、すぐに棄却されました。しかし、質問自体は私の意見ではそれほど悪くはないので、私はこの質問のうまくいったバージョンをもう一度尋ねることにしました。文字列暗号化 - Spotifyコードのようなユニークなパターンを生成する
[OK]を、私はどのように文字列の暗号化が不思議です。新しいSpotifyコードが動作しています。私はJavaScriptでこのパターンの暗号化のようなものを実装することが可能となる程度でスーパー興味がある
:下の画像を参照してください。
Spotifyのコード - Iはすでに上述してきたが - 異なるサイズのバーに分割されている行で構成されています。
24行に分割された行があり、すべての行のサイズが '3'、 '5'、 '7'または '9'であるとします。
string = 'hello' --> pattern = '3,3,5,7,9,3,7,9,9,3,3,5,3,9,5,3,3,7,5,9,3,9,3,9'
その後戻って、文字列として読み込んもコンバーチブルであることを、ユニークなパターンに文字列(が5つの文字を言うことができます)を変換するための良い方法/簡単な方法は何ですか?
これまで私が開発したコードですが、このコードでは10種類の可能性(バーサイズ)を持つキー配列を使用しましたが、私は4種類のサイズが好きです。
説明:
私はハロー「私の文字列を変換する 『』バイナリ形式にし、このような何かを得るために最大3のグループにアップした文字列を分割する:[ 『001』、 『110』、」 0 ']。
その後、上記の結果配列を使用して、下のキー配列で一致するものを見つけて、インデックスを取得して(10種類の異なるインデックス付き - > 10種類の異なるインデックス)、バーサイズとして使用します。
しかし、文字列を一意のパターンに変換する方法がより効率的でなければなりません。私は誰かが私の小さなアルゴリズムを改善するのに役立つことを願っています。百万円前払いありがとうございます。
var key = ['0', '1', '000','001','010','100','110','101','011','111']
String.prototype.encode = function() {
var code = this, result = [],encryped_string=[]
for (var i=0; i<code.length;i++) result.push(code[i].charCodeAt(0).toString(2).match(/.{1,3}/g));
for (var i=0; i<result.length; i++) for (var j=0; j<result[i].length; j++) encryped_string.push(key.indexOf(result[i][j]))
return encryped_string
}
var code = 'hello';
console.log(code.encode())
1. 10は何ですか?最初の2つのエントリは必要ありません。 2. Unicodeを処理する場合は、各バイトの8ビットと文字ごとの複数バイトを処理する必要がありますが、おそらくUTF-8が最適です。世界と絵文字のほとんどには、Unicodeが必要です。 – zaph