*なんて書けがいいかわからないので、短文C#です
C#で、https://www.muryou-tools.com/sinsuu-change.php
みたいに、95進数を扱いたいです。
#使用ツールなど
IDE : Microsoft Visual Studio 2019
OS : Windows10 64bit
言語 : C#
種類 : Windows Forms
フレームワーク : .Net(DotNet) Frameworks
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/08 07:33

回答3件
0
・n進数とm進数の変換方法がわからない
ということです
じゃあ、y_waiwaiさんの回答の
95で割っていって、その余りを並べていけばいいという話になります
で完結ですが、0から94(十進)までの95種の文字が要ります。
最下位の桁が1の位(これは何進法でも同じ)、その左が95の位、その左が9025(=95*95)の位です、以下同様。
200(十進)を変換するとすると、95(十進)で割って、2あまり10(十進)なので、1の位が10(十進)に対応する文字になります。
商が2なので、95の位が2です。
10(十進)に対応する文字がA
だとすると、2A
(95進)ですね。
今回は最初の割り算で商が2でしたが、商が95以上ならさらに95で割って、余りが95の位の文字、商が9025の位以上の文字になります。これを商が95未満になるまで繰り返す。
「N進法って中学で習ったな」と思って「進法変換 中学」でググると、中学受験の記事ばかり。
今は小学生で習うんですね。
投稿2020/01/08 08:00
総合スコア86365
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/08 09:00

0
95進数であれば、95で割っていって、その余りを並べていけばいいという話になります
がんばってください
投稿2020/01/08 04:13
総合スコア88180
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
こういうことですかね。
csharp
1using System; 2using System.Collections.Generic; 3using System.Linq; 4 5 6class Program 7{ 8 public static void Main() 9 { 10 Console.WriteLine((new ConvertHelper()).ToString(192)); 11 Console.WriteLine((new ConvertHelper()).ToLong("25")); 12 } 13} 14internal class ConvertHelper 15{ 16 private readonly string Chars; 17 private readonly int Stem; 18 public ConvertHelper(int stem, string chars) 19 { 20 if(stem < 1) throw new ArgumentOutOfRangeException(); 21 if (chars.Length != (new HashSet<char>(chars)).Count) throw new ArgumentOutOfRangeException(); 22 Chars = chars; 23 Stem = stem; 24 } 25 26 public ConvertHelper(int stem, IEnumerable<char> chars) : this(stem, string.Join(string.Empty, chars)) 27 { 28 } 29 public ConvertHelper() : this(95, @"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!""#$%&'()*+,-./:;<=>?@[]^_`{|}~ ") { } 30 31 32 public string ToString(long number) => string.Join(string.Empty, NextDigit(number).Reverse()); 33 public string ToString(int number) => ToString((long)number); 34 private IEnumerable<char> NextDigit(long number) 35 { 36 while (number > 0) 37 { 38 yield return Chars[(int)(number % Stem)]; 39 number /= Stem; 40 } 41 } 42 public long ToLong(string express) 43 { 44 return (long)express.Reverse().Select((c,i) => (long)Chars.IndexOf(c) * Math.Pow(Stem, i)).Sum(); 45 } 46}
36進数までのサンプルを参考に頑張ってください。
投稿2020/01/08 03:35
編集2020/01/08 15:48総合スコア12705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。