Я недавно работал над проектом, в котором мне нужно было преобразовать правильную строку чисел в шестнадцатеричный ASCIII и сохранить шестнадцатеричную строку.Как преобразовать правильную строку в шестнадцатеричную строку ASCII в C#?
Так что было что-то вроде
string random_string = "4000124273218347581"
, и я хотел, чтобы преобразовать его в шестнадцатеричную строку в виде
string hex_string = "34303030313234323733323138333437353831"
Это может показаться, как ни странно конкретной задачи, но это один я столкнулся и , когда я попытался выяснить, как его выполнить, я не мог найти ответы в Интернете.
В любом случае, я понял, и создал класс, чтобы сделать вещи более аккуратными в моем коде.
Если кому-то еще нужно преобразовать правильную строку в шестнадцатеричную строку, я отправлю ответ в тот момент, который будет содержать мое решение.
(я довольно новыми для 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();
Если это так, правильная работа, преобразованная строка должна быть в два раза длиннее исходной строки (из-за шестнадцатеричного использования двух байтов для представления каждого символа).
Теперь, когда кто-то уже отмечалось, вы можете найти статью, сделать что-то подобное здесь:
http://www.c-sharpcorner.com/UploadFile/Joshy_geo/HexConverter10282006021521AM/HexConverter.aspx
Но я не нашел его большую помощь для моей конкретной задачи, и я хотел бы думаю, что мое решение более элегантный;)
Как «шестнадцатеричная строка» относится к оригиналу? Какие правила? – Oded
@Oded: ASCII Rulez! –
положил '3' перед каждым символом :) –