2011-01-11 13 views
1

4文字配列を整数に変換するにはどうすればよいですか?JavaScript - 4文字配列を整数に変換する

+0

最上位はどこですか? '[0]'や '[3]'に?また:どのような基盤ですか? –

+0

これまでに書いたコードを表示できますか? –

+0

JavaScriptの文字が8ビットになることを秘密に望んでいるわけではありませんか? –

答えて

2
var arr = [5,2,4,0], 
    foo = +arr.join(''); 

console.log(foo, typeof foo); 
+0

ポスターは数字ではなく4文字を具体的に言いませんか? – cdmckay

0

文字の値を整数のビットにどのようにマッピングするかによって決まります。

ワンストレートフォワードソリューションは、次のようになります

var myArray = ['1', '2', '3', '4'] 
var myInt = (myArray[0].charCodeAt(0) << 24) | (myArray[1].charCodeAt(0) << 16) | (myArray[2].charCodeAt(0) << 8) | myArray[3].charCodeAt(0); 

これは整数0x01020304を生成します。これは、入力配列の整数を使用します。文字の場合は、使用する文字によって結果が異なる場合があります。

更新:文字をコードポイントに変換するには、charCodeAt()を使用してください。

+0

文字は '<<'によって整数に変換されるので、 '[0-9]'以外の文字はゼロとして扱われます。 –

+0

私はこのようなことをしようとしていますが、あなたの配列では数字を使用していませんか? //すなわち、C++コード \t INTオーバーライド:(CONST文字*バイト){ \t \tリターン(INT)(((unsigned char型)バイト[3] << 24)です| \t \t \t \t \t((unsigned char型)バイト[2] << 16)| \t \t \t \t \t((unsigned char型)バイト[1] << 8)| \t \t \t \t \t(unsigned char型)バイト[0])。 \t} – Sotiris

0
var chArr = ['1','2','3','4']; 
var num = parseInt(chArr.join(''), 10); 

または

var num = parseInt(chArr.reverse().join(''), 10); 

場合は、ASCII文字コードにこれらの文字をオンにしようとすると、バイト値としてコードを使用している

3

..あなたの配列が満たされている順序に依存します。これはcharCodeAtを使用して行うことができます。たとえば、

var str = "x7={"; 
var result = (str.charCodeAt(0) << 24) 
      + (str.charCodeAt(1) << 16) 
      + (str.charCodeAt(2) << 8) 
      + (str.charCodeAt(3)); 

これは、予想どおり2016886139を返します。

ただし、C++とは異なり、JavaScriptは必ずしも1バイトの256文字セットを使用するとは限りません。たとえば、'€'.charCodeAt(0)は、同等のC++プログラムで許容される最大値の256をはるかに上回る8364を返します。したがって、0〜255の範囲外の文字は、上記のコードがerraticalyになる原因となります。

ユニコードを使用すると、代わりに上記の "砷㵻"を表すことができます。

+0

番号は64ビット整数としてJavascriptに格納されます。ビットごとの演算子を使用して、32ビットに変換されます。 – jAndy

+1

jAndy:私は同意し、上記は64ビットで実行されているか32ビットで実行されていても同じです。私の指摘は、255より大きい値を持つバイトを持つと、上記のバイトでそれらが溢れることになります。 –

+0

それは私が欲しかったのと全く同じように働いています、ありがとう! – Sotiris

関連する問題