2016-11-05 12 views
-7

をint型なので、誰もが使用することを言う:C#の変換int型は、[OK]を

// Store integer 182 
int intValue = 182; 
// Convert integer 182 as a hex in a string variable 
string hexValue = intValue.ToString("X"); 
// Convert the hex string back to the number 
int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber); 

しかし、これはしかし、動作しません。これは誰かが尋ねるたびに答えですが、私がこれを行うと、私の整数は10進数に変換されます。

これは実際には機能しないため、他のすべての質問に間違った答えが含まれているため、これは重複した質問ではありません。 intを16進intに変換する本当の方法は何ですか?これを行うとintAgainは小数点以下のままになります。

+1

intAgainは小数であるはずです。あなたの16進数のHEX値は... –

+2

質問は自己答解であるため、この質問を議論の対象外としています。目的の結果はすでに 'hexvalue'の投稿コードにあります。ポスターは、価値観とプレゼンテーションの理解が不足しているため混乱しています。 –

+0

もうひとつ言い訳がありますか?[tag:malbolge]多分? –

答えて

1

int intValue = 182;を宣言すると、メモリに32ビット(4バイト)が割り当てられます。 メモリが唯一のバイナリ値を格納することができますので、あなたはこのようにメモリに182を保存する:あなたがstring hexValue = intValue.ToString("X");を行うと

00000000 #Byte 1 
00000000 #Byte 2 
00000000 #Byte 3 
10110110 #Byte 4 

、あなたはメモリ内の文字列を表現する文字の配列を割り当てます。
16進数の182はB6です。
各charはバイナリで格納され、番号B6の桁に設定されます。
メモリ内にバイナリとして保存される文字は、UTF-16標準でエンコードされます(1文字あたり2バイトが必要です)。あなたは数に文字列を再度変換する変数hexValueのメモリ表現int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

01000010 #Byte 1 (char 'B') 
    00000000 #Byte 2 
    00110110 #Byte 3 (char '6') 
    00000000 #Byte 4 


サンプル:

00000000 #Byte 1 
00000000 #Byte 2 
00000000 #Byte 3 
10110110 #Byte 4 

int型は、数値ベースが格納されていない、などの店舗のみ値メモリ内のバイナリ、16進数、または10進数は、値を表すための単なる方法です。これは、値を読み込み可能な文字列に変換する場合にのみ実行できます。

+1

C#( 'Char' in .NET)の' char'はコードポイントに応じて1つまたは2つのUnicodeコードポイントをエンコードするUTF-16コードユニットです。 "B"は "6"と同様にUTF-16コード単位を1つ必要とします。あなたの説明は、あなたがそれを説明していれば有効です。 (BTW-UTF-16は.NET、Java、JavaScript、XML、HTMLなどで使用されています...多くの多くのASCII文字は間違っています) –

+1

@Tom Blodget、ありがとうございました。私は正しくバイト順を置いた? –

関連する問題