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. BaseXのXQueryからxmlをcsvに変換する
- 2. Objective C/iPhone AppプログラムでNSMutableDataをJSONまたはDictionaryに変換しますか?
- 3. Racket 2htdp/worldのbase10 RGBアルファチャンネルを定義します。
- 4. キャストまたはConvert.ToSingle()でdoubleをfloatに変換しますか?
- 5. flvまたはswfにビデオをphpで変換しますか?
- 6. Cコードを.netに変換する(C#またはVB.net)
- 7. はC++で4バイトから3バイトに変換します
- 8. Android NDKからC++アームで変換の変換エラーが発生しました
- 9. charをASCIIに変換してC#で表示しますか?
- 10. "PDF"を "PNG"に変換します。C#
- 11. console.writelineをRichTextBox.AppendText()に変換します。C#
- 12. 置換の_mm_shuffle_epi32をC式に変換しますか?
- 13. ファイルを変換します.InputstreamをUTF-8に変換します。C#
- 14. 変換文字は、整数またはC/CではR
- 15. PythonプログラムをC/C++コードに変換しますか?
- 16. コードをC++からC#に変換します
- 17. LLVMはObjective-Cメソッドをインライン関数に変換しますか?
- 18. C++/MEX(Matlab)コードをスタンドアロンC++に変換できますか?
- 19. 変換されたXMLをXSLで変換しますか?
- 20. C#でIntPtrをint *に変換しますか?
- 21. C++でchar文字を数値に変換しますか?
- 22. ExcelをC#でdatatableに変換しますか?
- 23. C++でunixのタイムスタンプを曜日に変換しますか?
- 24. C#でMemoryStreamをFileStreamに変換しますか?
- 25. C#でビットマップを2Dバイト配列に変換しますか?
- 26. C#でYUV 4:2:2をRGBに変換しますか?
- 27. C#文字列から日付や時刻を変換したときに変換に失敗しました
- 28. C#DateTime特定の形式を変換または解析しますか?
- 29. C++、C#、Perl、またはJavaからPHPへの変換
- 30. Cは関数の中でintをdoubleに変換します
「何を試しましたか」 (詳細が議論され、努力が実証されたので、完全に動作していなくても試みることが望ましい) –
また、*既存の* base64エンコーダ/デコーダを検討することを検討する。数学ではわずかに異なる数字( '/'や '% 'の代わりに64、'/'や'%'などで27など)が考えられますが、そのアイデアは同じです。 –
pst:何かが存在する場合、私はそれを書く必要はないので、まだ何も試していません。どのような方法でも完成したコードを求めているわけではありません。ありがとう! – miltonjbradley