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