誰かアドバイスをいただけますか?
「01001011」などの文字列があり、それを逆にする必要があるので、以前.split('')
よりも使用.reverse()
しました。配列を文字列として読み取り、整数に変換する必要があります。出来ますか?
ありがとう
誰かアドバイスをいただけますか?
「01001011」などの文字列があり、それを逆にする必要があるので、以前.split('')
よりも使用.reverse()
しました。配列を文字列として読み取り、整数に変換する必要があります。出来ますか?
ありがとう
配列を文字列に戻す場合は 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 );
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進数として解釈される可能性があります。経験則として、常に基数を指定してください。
これにより、バッファ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