4
parseInt('bcedfg',16)

このコードに基づいて、JavaScript で773855を取得しています。

変換テーブルを調べましたが、この「773855」値を取得する方法がわかりません

私の質問は、この小さなコードを ac# コードに変換したかったため、parseint がこの "773855" 値をどのように出力するかです。C# で同様の方法を使用すると、この "773855" 値を取得できます

4

2 に答える 2

10

bcedfghex(base: ) として解釈され16ます。それでも、16 進スケールは後でロールオーバーするfため、javascript では、g変換前にそれ以降のすべてが削除されます。そうは言っても、変換のしくみは次のとおりです。

decValueOfCharPosition = decValueOfChar * base ^ posFromTheRight

それで:

b = 11 * 16^4 = 11 * 65536 = 720896
c = 12 * 16^3 = 12 * 4096 = 49152
d = 13 * 16^2 = 13 * 256 = 3328
e = 14 * 16^1 = 14 * 16 = 224
f = 15 * 16^0 = 15 * 1 = 15

各文字の位置の 10 進値がわかったら、それらを加算して変換された 10 進値を取得します。

b(720896) + c(49152) + d(3328) + e(224) + f(15) = 773855

Cとその子孫は、入力に関してはそれほど寛大ではありません。最初の無効な文字とその後に続く可能性のあるすべての文字を削除する代わりに、C はFormat Exception. これを回避して JavaScript 機能を取得するには、最初に無効な文字とその次のものを削除する必要があります。次に、次を使用できます。

Convert.ToInt32(input, base)

無効な文字を削除する方法は複数あり、C の知識が劣っているため、無効な文字を削除する方法は含めませんでした。

于 2012-10-21T09:55:16.343 に答える
6

使用Convert.ToInt32:

Convert.ToInt32(theString, 16)

このオーバーロードを使用します。

public static int ToInt32(string value, int fromBase)

文字列に含まれているFormatExceptionため、次のようになることに注意してください。g

FormatException
値に、 fromBase で指定された基数で有効な数字ではない文字が含まれています。例外メッセージは、値の最初の文字が無効な場合、変換する数字がないことを示しています。それ以外の場合、メッセージは、値に無効な末尾文字が含まれていることを示します。

MSDN

js はあまりにも多くのエラーを「許す」傾向があるため、javascript でエラーが発生することはありません。これはその例の 1 つです。

于 2012-10-21T09:49:16.980 に答える