C#でベース変換を行う準備ができましたか?私はベース26からベース27の数字をベース10に変換しようとしています。私は紙でそれを行うことができますが、私は経験豊富なプログラマーではなく、可能であればゼロからそれをやりません。ありがとう!C#でbase-27(またはbase-X)をbase-10に変換しますか?
4
A
答えて
3
数字2、8または16を基数10(Convert.ToInt32
)に変換する既成の関数があります。ベース26またはベース27からベース10に変換する場合は、自分で行う必要があります。
は今、私はベース26個の数字のことを聞いたことがないので、私はただ「数字」はZに(0の値を持つ、そしてZは、25の10進値を持つ)されていると仮定するつもりです。 10をベースにベース26から変換するには、次の作業を行う必要があります
string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int GetDigitValue(char digit)
{
return charset.IndexOf(digit);
}
int ConvertFromBase26(string number)
{
int result = 0;
foreach(char digit in number)
result = result * charset.Length + GetDigitValue(digit);
return result;
}
ちょうど26
注意を表しどんなキャラクター追加、ベース27から変換するには:(あなたが文字列を変換することができますエラー訂正はありません"$#$ @#$ @")、GetDigitValueはかなり効率的ではなく、これらの変換をたくさん行う予定の場合はルックアップテーブルに置き換える必要があります。
EDIT:ちょうどキックのためのLINQバージョン。
文字列が正当な数字のみで構成されていると仮定すると、効率的な検索とエラー修正はありません。
string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int ConvertFromBase(string charset, string number)
{
return number.Select(c=>charset.IndexOf(c)).Aggregate(0, (x, y) => x*charset.Length +y);
}
私は最初のバージョンが読みやすくなっていると思います。
0
あなたの答えを書き留めてください。 charのASCII値を使うことができるので、charsetルックアップリストは必要ありません。
int ConvertFromBase26(string number)
{
return number.Select(digit => (int)digit - 64).Aggregate(0, (x, y) => x * 26 + y);
}
私は、Excelでプログラミングしながら、中にintに列stringアドレスを変換するために、これを使用していました。
関連する問題
- 1. Objective C/iPhone AppプログラムでNSMutableDataをJSONまたはDictionaryに変換しますか?
- 2. キャストまたはConvert.ToSingle()でdoubleをfloatに変換しますか?
- 3. flvまたはswfにビデオをphpで変換しますか?
- 4. Android NDKからC++アームで変換の変換エラーが発生しました
- 5. Cコードを.netに変換する(C#またはVB.net)
- 6. はC++で4バイトから3バイトに変換します
- 7. console.writelineをRichTextBox.AppendText()に変換します。C#
- 8. ファイルを変換します.InputstreamをUTF-8に変換します。C#
- 9. 変換されたXMLをXSLで変換しますか?
- 10. PythonプログラムをC/C++コードに変換しますか?
- 11. コードをC++からC#に変換します
- 12. LLVMはObjective-Cメソッドをインライン関数に変換しますか?
- 13. C#文字列から日付や時刻を変換したときに変換に失敗しました
- 14. C#でYUV 4:2:2をRGBに変換しますか?
- 15. C++でchar文字を数値に変換しますか?
- 16. C#でMemoryStreamをFileStreamに変換しますか?
- 17. C#でIntPtrをint *に変換しますか?
- 18. C#でビットマップを2Dバイト配列に変換しますか?
- 19. PHPまたはJavascriptで時刻を変換しますか?
- 20. Cは関数の中でintをdoubleに変換します
- 21. floatをキャストまたはnvarcharに変換しますか?
- 22. TEXファイルをPDFまたはDOCXに変換しますか?
- 23. ルア - 3gpファイルをraw(またはwav)に変換しますか?
- 24. C#DateTime特定の形式を変換または解析しますか?
- 25. C++、C#、Perl、またはJavaからPHPへの変換
- 26. BaseX変数が定義されている間、未定義変数でXQJ APIエラーが発生しました
- 27. VBscriptをVB.NetまたはC#に変換する
- 28. オープンソースのCまたはC++ライブラリは、任意のUTF-32をNFCに変換できますか?
- 29. JSONレスポンスで{null}からsystem.Int32にキャストまたは変換できませんでした。C#
- 30. Axiomatic Ansi Cコンパイラは、cソースコードをjavabyteコードに直接変換しますか?
「何を試しましたか」 (詳細が議論され、努力が実証されたので、完全に動作していなくても試みることが望ましい) –
また、*既存の* base64エンコーダ/デコーダを検討することを検討する。数学ではわずかに異なる数字( '/'や '% 'の代わりに64、'/'や'%'などで27など)が考えられますが、そのアイデアは同じです。 –
pst:何かが存在する場合、私はそれを書く必要はないので、まだ何も試していません。どのような方法でも完成したコードを求めているわけではありません。ありがとう! – miltonjbradley