Merhaba,

Geliştirmekte olduğum projemde, dizgeler (string) ve onaltılık sayılar (hexadecimal) arasında dönüşümler yapmam gerekiyordu. Bildiğiniz üzere, PHP'de "pack" ve "unpack" fonksiyonları ile bu işlemi kolaylıkla hallediyoruz. C# tarafında ise, PHP'de aldığım sonuçların birebir aynısını almam gerekiyordu. Bu işe yönelik iki metot hazırladım. Bu metotları paylaşmak istiyorum.

Metotlar;

        public string FromHexadecimalString(string HexadecimalString)
        {
            byte[] Bytes = new byte[HexadecimalString.Length / 2];

            for (int Index = 0; Index < Bytes.Length; Index++)
            {
                Bytes[Index] = Convert.ToByte(HexadecimalString.Substring(Index * 2, 2), 16);
            }

            return Encoding.UTF8.GetString(Bytes);
        }

        public string ToHexadecimalString(string String)
        {
            StringBuilder StringBuilder = new StringBuilder();

            byte[] Bytes = Encoding.UTF8.GetBytes(String);

            foreach (byte Byte in Bytes)
            {
                StringBuilder.Append(Byte.ToString("X2"));
            }

            return StringBuilder.ToString();
        }
Metotların kullanımı;

PHP;

<?php

	header('Content-Type: text/plain; charset=UTF-8');

	$OriginalString = 'çğıöşüÇĞİÖŞÜ';

	$HexadecimalString = unpack('H*', $OriginalString);

	$HexadecimalString = array_shift($HexadecimalString);

	$RevertedString = str_replace(' ', '', $HexadecimalString);

	$RevertedString = str_replace('\x', '', $RevertedString);

	$RevertedString = pack('H*', $RevertedString);

	echo 'Orjinal dizge: ' . str_repeat(' ', 28) . $OriginalString . PHP_EOL . PHP_EOL;

	echo 'Onaltılık sayı haline dönüştürülmüş dizge: ' . $HexadecimalString . PHP_EOL . PHP_EOL;

	echo 'Eski haline döndürülmüş dizge: ' . str_repeat(' ', 12) . $RevertedString;

	/**
	 * Orjinal dizge:                             çğıöşüÇĞİÖŞÜ
	 *
	 * Onaltılık sayı haline dönüştürülmüş dizge: c3a7c49fc4b1c3b6c59fc3bcc387c49ec4b0c396c59ec39c
	 *
	 * Eski haline döndürülmüş dizge:             çğıöşüÇĞİÖŞÜ
	 */
C#;

            string Original, HexadecimalString, RevertedString;

            Original = "çğıöşüÇĞİÖŞÜ";

            HexadecimalString = ToHexadecimalString(Original);

            RevertedString = FromHexadecimalString(HexadecimalString);

            Console.WriteLine("Orjinal dizge:                             {0}", Original);

            Console.WriteLine("Onaltılık sayı haline dönüştürülmüş dizge: {0}", HexadecimalString);

            Console.WriteLine("Eski haline döndürülmüş dizge:             {0}", RevertedString);

            Console.ReadKey();

            /**
             * Orjinal dizge:                             çğiösüÇĞIÖSÜ
             * 
             * Onaltilik sayi haline dönüstürülmüs dizge: C3A7C49FC4B1C3B6C59FC3BCC387C49EC4B0C396C59EC39C
             * 
             * Eski haline döndürülmüs dizge:             çğiösüÇĞIÖSÜ
             */