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Ü */