Символы 16-битные, поэтому вы должны кодировать их в восьмибитные значения, чтобы упаковать их в целое число. Вы можете использовать класс Encoding
для преобразования между символами и байтами, а класс BitConverter
для преобразования между байтами и целыми числами
Вот преобразование в обе стороны:
string original = "ABCD";
int number = BitConverter.ToInt32(Encoding.ASCII.GetBytes(original), 0);
string decoded = Encoding.ASCII.GetString(BitConverter.GetBytes(number));
Обратите внимание, что порядок байтов в целых числах зависит от порядкового номера компьютера. В системе с прямым порядком байтов числовое значение «ABCD» будет 0x44434241. Чтобы получить обратный порядок, вы можете обратить байтовый массив:
byte[] data = Encoding.ASCII.GetBytes(original);
Array.Reverse(data);
int number = BitConverter.ToInt32(data, 0);
byte[] data2 = BitConverter.GetBytes(number);
Array.Reverse(data2);
string decoded = Encoding.ASCII.GetString(data2);
Или, если вы используете framework 3.5:
int number =
BitConverter.ToInt32(Encoding.ASCII.GetBytes(original).Reverse().ToArray() , 0);
string decoded =
Encoding.ASCII.GetString(BitConverter.GetBytes(number).Reverse().ToArray());