前提・実現したいこと
C#で2進数から日本語を表示したい。
(具体例)
こんにちは
↓
2進数
『111000111000000110010011111000111000001010010011111000111000000110101011111000111000000110100001111000111000000110101111』
↓ ←この部分を実現したいです。
こんにちは
イメージとしてWEBページ計算サイトで行うと…
下記サイトで2進数を16進数へ
https://hogehoge.tk/tool/number.html
↓
下記サイトで16進数を日本語へ
https://kujirahand.com/web-tools/Hex.php
これをC#で行いたいと考えています。
非常に長い2進数でも対応できるコードになります。
発生している問題・エラーメッセージ
int.Parseメソッドのところで以下エラーが出てしまいます。
+ $exception {"Int32 型の値が大きすぎるか、または小さすぎます。"} System.OverflowException
該当のソースコード
//2進数をstringへ string ostin = "10000010101010010101111100011110101"; //stringをintへ //int i = int.Parse(ostin); //intをbyte配列へ byte[] byteArray = BitConverter.GetBytes(i) //byte配列を16進数へ string num16 = WindowsFormsApp2.PrimitiveExtension.ToHexString(bytes); // 16進数文字列を数値へ int charCode16 = Convert.ToInt32(charCode, 16); // 数値(文字コード) を文字へ char c = Convert.ToChar(charCode16); // 「文字列」 string newChar = c.ToString();
試したこと
トライ①long型に変換をエラー箇所で試しましたが結果的にint型が必要なために断念。
トライ②string型をbyte配列に変換する方法を取り、
C#
1 string strVal = ostin; 2 byte[] bytes; 3 bytes = Encoding.ASCII.GetBytes(strVal); 4 5 foreach (byte b in bytes) 6 { 7 Console.Write(string.Format("{0,3:X2}", b)); 8 } 9 10 //byte配列を16進数にダンプ 11 string num16 = WindowsFormsApp2.PrimitiveExtension.ToHexString(bytes); 12 //16進数文字列を数値へ 13 string charCode = "num16"; 14 int charCode16 = Convert.ToInt32(charCode, 16); 15 //数値(文字コード)を文字へ 16 char c = Convert.ToChar(charCode16); // 数値(文字コード) -> 文字 17 string newChar = c.ToString(); 18 19
Convert.ToInt32下記エラー
'''
-
$exception {"認識可能な数値が見つかりませんでした。"} System.FormatException
'''
トライ③BigInteger…
2進数から端的にASCIIコードを利用して日本語に変換できるものだと思っていたのですがかなり苦戦してます。そもそもC#にはそういったライブラリなど用意していないものなのでしょうか。大きいintになった場合はどういった処理をしていいものなのでしょうか。よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
visual studio 2017
C#
win10

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/26 14:26
2018/08/26 16:50
2018/08/27 11:06
2018/08/27 11:13
2018/08/27 11:56
2018/08/27 12:29