質問するログイン新規登録
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

3回答

688閲覧

【C#】C#で進数を自作したい(95進数)

JumpActionGames

総合スコア29

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2020/01/08 03:03

0

0

*なんて書けがいいかわからないので、短文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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/01/08 03:12

何がわからないのでしょうか? ・C#がわからない ・n進数とm進数の変換方法がわからない ・その他
JumpActionGames

2020/01/08 07:07

10進数⇔95進数を変換したいです
otn

2020/01/08 07:33

> 10進数⇔95進数を変換したいです 質問に答える気は無いと言うこと?
JumpActionGames

2020/01/08 07:34

・n進数とm進数の変換方法がわからない ということです
guest

回答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

otn

総合スコア86365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JumpActionGames

2020/01/08 08:06

それをC#のコードで表現するとどういう感じでしょうか?
otn

2020/01/08 08:08

・n進数とm進数の変換方法がわからない だけじゃなくて、 ・C#がわからない も、両方だと言うことですか?
JumpActionGames

2020/01/08 08:13

この回答の通りにやってみようと思うのですが、 C#でこのことをするにはどういうコードでできますか? ということです
otn

2020/01/08 08:19

そのとおりプログラムに直せば良いです。 これが初めてのプログラミングですか? であれば、もっと易しい問題から取り組んだ方が良いです。
JumpActionGames

2020/01/08 08:26

プログラムはもう2000行以上は書きましたw
JumpActionGames

2020/01/08 08:31

サンプルくださいw
otn

2020/01/08 08:36

もっと易しい問題から取り組んだ方が良いです。
otn

2020/01/08 08:43

ていうか、サンプルはpapinianusさんが紹介しているじゃん。
JumpActionGames

2020/01/08 08:45

これは別ライブラリを使うので、、
otn

2020/01/08 16:05

疑似言語?で書くとこんな感じでしょうか。 CHARS = "0123456789ABCDEFGHI・・・・・" n = 200 ans = "" while n > 0 r = n % 95 ans = CHARS[r] + ans n = n / 95 end#while print ans
guest

0

95進数であれば、95で割っていって、その余りを並べていけばいいという話になります
がんばってください

投稿2020/01/08 04:13

y_waiwai

総合スコア88180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JumpActionGames

2020/01/08 07:07

どういうことですか?
y_waiwai

2020/01/08 07:14

数字を95で割ったあまりが1の位になります そしても一度95で割ったあまりがその次の桁、と、0になるまで繰り返しましょう。 がんばってくださいw
JumpActionGames

2020/01/08 07:17

えっと95進数の文字は 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ なんですが、例えば 10進数の123456 だったら d#P みたいな感じに
y_waiwai

2020/01/08 07:20

それ、95種類もないですが、どーするんですか?
JumpActionGames

2020/01/08 07:27

あ 途中にスペースあります
JumpActionGames

2020/01/08 07:29

一番最後が半角スペース
y_waiwai

2020/01/08 07:29

ということで、仕様がガバガバなので、もちっとよく考え直してきてください。 実装不能ではダメダメですやんw
JumpActionGames

2020/01/08 07:33

じゃあ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ の94進数で
y_waiwai

2020/01/08 07:35

なら94で割っていって余りを並べましょう
JumpActionGames

2020/01/08 07:49

どうやるんですか? 出来たらサンプルくれませんか?
y_waiwai

2020/01/08 07:52

タダ働きはしない主義なので無理です がんばって自分でコード書こうw
JumpActionGames

2020/01/08 07:55

やり方がわかりませんw
guest

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
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JumpActionGames

2020/01/08 07:08

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ ですw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問