私は最近、数値の通常の文字列を ASCIII 16 進数に変換し、16 進数を文字列に格納する必要があるプロジェクトに取り組んでいました。
だから私は次のようなものを持っていました
string random_string = "4000124273218347581"
そして、それを次の形式の16進数文字列に変換したかった
string hex_string = "34303030313234323733323138333437353831"
これは奇妙に具体的なタスクのように思えるかもしれませんが、私が遭遇したタスクであり、その実行方法を見つけようとしたときに、オンラインで答えを見つけることができませんでした.
とにかく、私はそれを理解し、コードを整理するためのクラスを作成しました。
他の誰かが通常の文字列を 16 進数の文字列に変換する必要がある場合に備えて、私のソリューションを含む回答をすぐに投稿します。
(私はstackoverflowにかなり慣れていないので、これで問題ないことを願っています)
=========================================
十分な評判がないため、質問してから最初の 8 時間以内に自分で質問に答えることができないことが判明しました。
だから私は代わりにここに私の答えを固執しています:
さて、これが私の解決策です:
StringToHex
名前空間で呼び出されるクラスを作成しました
public class StringToHex
{
private string localstring;
private char[] char_array;
private StringBuilder outputstring = new StringBuilder();
private int value;
public StringToHex(string text)
{
localstring = text;
}
public string ToAscii()
{
/* Convert text into an array of characters */
char_array = localstring.ToCharArray();
foreach (char letter in char_array)
{
/* Get the integral value of the character */
value = Convert.ToInt32(letter);
/* Convert the decimal value to a hexadecimal value in string form */
string hex = String.Format("{0:X}", value);
/* Append hexadecimal version of the char to the string outputstring*/
outputstring.Append(Convert.ToString(hex));
}
return outputstring.ToString();
}
}
そして、それを使用するには、次の形式で何かを行う必要があります。
/* Convert string to hexadecimal */
StringToHex an_instance_of_stringtohex = new StringToHex(string_to_convert);
string converted_string = an_instance_of_stringtohex.ToAscii();
正しく機能している場合、変換された文字列は元の文字列の長さの 2 倍になるはずです (16 進数では各文字を表すのに 2 バイトを使用するため)。
さて、誰かがすでに指摘しているように、ここで同様のことをしている記事を見つけることができます:
http://www.c-sharpcorner.com/UploadFile/Joshy_geo/HexConverter10282006021521AM/HexConverter.aspx
しかし、私はそれが私の特定のタスクにはあまり役に立たなかったので、私のソリューションはよりエレガントだと思いたいです;)