48

誰かアドバイスをいただけますか?

「01001011」などの文字列があり、それを逆にする必要があるので、以前.split('')よりも使用.reverse()しました。配列を文字列として読み取り、整数に変換する必要があります。出来ますか?

ありがとう

4

3 に答える 3

73

配列を文字列に戻す場合は join()MDN)、文字列を整数に変換する場合はparseInt()MDN)を使用します。後者の2番目の引数は、オプションの基数です。

JavaScriptは、使用する基数を決定しようとしますが、必ず手動で基数を追加する必要があります。MDNからの引用:

基数が未定義または0の場合、JavaScriptは次のことを想定しています。

  • 入力文字列が「0x」または「0X」で始まる場合、基数は16(16進数)です。

  • 入力文字列が「0」で始まる場合、基数は8(8進数)です。この機能は非標準であり、一部の実装では意図的にサポートされていません(代わりに基数10を使用)。このため、parseIntを使用する場合は、常に基数を指定してください。

  • 入力文字列が他の値で始まる場合、基数は10(10進数)です。

したがって、あなたの場合、次のコードが機能するはずです。

var a = '01001011';

var b = parseInt( a.split('').reverse().join(''), 2 );

または単に(反転せずに開始文字列を変換したい場合):

var b = parseInt( a, 2 );
于 2012-06-19T14:48:43.993 に答える
31

parseInt別の基数で呼び出すだけです。この場合は、バイナリに2を使用します。

var a = parseInt("01001011", 2);
// a === 75

parseInt明示的に指定しない場合、基数自体を把握しようとします。Mozilla Developer Networkから

基数がundefinedまたは0の場合、JavaScriptは次のことを想定しています。

  • 入力stringが「0x」または「0X」で始まる場合、基数は16(16進数)です。
  • 入力stringが「0」で始まる場合、基数は8(8進数)です。この機能は非標準であり、一部の実装では意図的にサポートされていません(代わりに基数10を使用)。このため、を使用するときは常に基数を指定してparseIntください。
  • 入力stringが他の値で始まる場合、基数は10(10進数)です。

この場合、基数を指定することが重要です。指定しないと、10進数または8進数として解釈される可能性があります。経験則として、常に基数を指定してください。

于 2012-06-19T14:48:12.373 に答える
6

これにより、バッファ16進数が取得され、バイナリstrに変換されて、バッファ16進数に戻されます。

注:バッファーの16進数とは、10進値を意味します。これは、バッファーを反復処理して配列内の各項目をプルすると、10進値が得られるためです(例:d2ではなく210)。

var buffer - new Buffer([0, 210, 242]); // Node

// var arrayBuffer = new ArrayBuffer(3); // JavaScript

// var uint8 = new Uint8Array(arrayBuffer); // JavaScript/ 16Array, 32Array, etc

バッファに精通している必要があります

を使用してバッファを反復処理し、for(){}内部で次のような操作を実行できます。

(210).toString(2); // '11010010'

(210).toString(16); // 'd2' (untested)

(210).toString(8); // (Octal-Digits representation)

parseInt((210).toString(2), 2); // 210

parseInt((210).toString(2), 2).toString(16); // 'd2'

(210).toString(2)明らかに、 「IN YOU FOR LOOP」を使用する代わりに、「(buffer[i]).toString(2)」を使用します。

エンディアン担当者はあなた次第です!:)(array.reverse())

お役に立てれば!

PS。parseInt(('00000' + (210).toString(2).substring(5, 8)), 2); // 2

parseInt((210).toString(2).substring(5, 8), 2); // 2

于 2013-05-26T20:32:02.857 に答える