PDA

View Full Version : سوال: کانورت رشته هگزا دسیمال



hooooman
یک شنبه 23 بهمن 1390, 22:44 عصر
سلام
یک رشته بصورت هگزا دسیمال دارم.در واقع یک بسته Http هستش .چجوری میشه اونو به حروف قابل خوندن تبدیل کردوالبته توش حروف فارسی هم هستش و مشکل اصلی من همینه.
کسی نظری داره؟

hooooman
یک شنبه 23 بهمن 1390, 23:20 عصر
مثلا این رشته رو چجوری میشه به حروف تبدیل کرد؟ البته این فقط یک نمونه هستش.ممکنه داخل این رشته حروف فارسی هم وجود داشته باشه:
"45 00 00 3E 41 40 00 00 80 11 99 78 02 92 CD ED 5C 2A 33 4D E9 8E 00 35 00 2A 0A 24 AB 9D 01 00 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01"

gilsoft
دوشنبه 24 بهمن 1390, 02:32 صبح
مثلا این رشته رو چجوری میشه به حروف تبدیل کرد؟ البته این فقط یک نمونه هستش.ممکنه داخل این رشته حروف فارسی هم وجود داشته باشه:
"45 00 00 3E 41 40 00 00 80 11 99 78 02 92 CD ED 5C 2A 33 4D E9 8E 00 35 00 2A 0A 24 AB 9D 01 00 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01"
سلام دوست عزیز
من بصورت "کلیات" کد زیر رو پیشنهاد می کنم :
یک Button و دوتا RichTextBox به فرم خود اضافه کنید (صرفا جهت یادآوری)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Sa() As String = Split("45 00 00 3E 41 40 00 00 80 11 99 78 02 92 CD ED 5C 2A 33 4D E9 8E 00 35 00 2A 0A 24 AB 9D 01 00 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 00 01 00 00 00 00 00 00 03 64 6E 73 08 6D 73 66 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01 74 6E 63 73 69 03 63 6F 6D 00 00 1C 00 01")
Dim HexToDec As Integer
Dim Str1 As String = "" ' روش اول Chr()
Dim Str2 As String = "" ' روش دوم ChrW()
For i As Integer = 0 To Sa.Length - 1
HexToDec = Convert.ToInt32(Sa(i), 16) ' تبدیل مبنای هگزا به دسیمال
Str1 &= Sa(i) & " => " & Str(HexToDec) & " = " & IIf(HexToDec > 0, Chr(HexToDec), "NULL") & vbCrLf
Str2 &= Sa(i) & " => " & Str(HexToDec) & " = " & IIf(HexToDec > 0, ChrW(HexToDec), "NULL") & vbCrLf
Next
RichTextBox1.Text = Str1
RichTextBox2.Text = Str2
End Sub
شما میتونید با تغییرات در کد بالا ، اونو بشکل دلخواه خودتون در بیارید ! ....

hooooman
دوشنبه 24 بهمن 1390, 23:51 عصر
دوستان نظر دیگه ای ندارن؟

hooooman
سه شنبه 25 بهمن 1390, 08:43 صبح
با تشکر از gilsoft
با روش ایشون معادل کلمه "تبدیل" -------> "%D8%AA%D8%A8%D8%AF%DB%8C%D9%84" شده
حالا چجوری باید اینو تبدیل کنم که کلمه "تبدیل" رو نتیجه بده؟

gilsoft
پنج شنبه 27 بهمن 1390, 05:55 صبح
با تشکر از gilsoft
با روش ایشون معادل کلمه "تبدیل" -------> "%D8%AA%D8%A8%D8%AF%DB%8C%D9%84" شده
حالا چجوری باید اینو تبدیل کنم که کلمه "تبدیل" رو نتیجه بده؟

سلام دوست عزیز
اینم نمونه کد : (فقط یه کم طولانی شده)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const Sprt = "%"
Dim mStr As String = "تبدیل"
'================================
' تبدیل رشته به هگزا
'================================
Dim Hex1 As String = "" ' روش اول Asc()
Dim Hex2 As String = "" ' روش دوم AscW()
Dim C As Char = ""

For i As Integer = 1 To mStr.Length
C = Mid(mStr, i, 1)
Hex1 &= Convert.ToString(Asc(C), 16).ToUpper + Sprt ' تبدیل دسیمال به هگزا
Hex2 &= Convert.ToString(AscW(C), 16).ToUpper + Sprt ' تبدیل دسیمال به هگزا
Next
'================================
'تبدیل هگزا به رشته
'================================
Dim Ha1() As String = Split(Hex1, Sprt)
Dim Ha2() As String = Split(Hex2, Sprt)
Dim HexToDec As Integer = 0
Dim Str1 As String = "" ' روش اول Chr()
Dim Str2 As String = "" ' روش دوم ChrW()

For i As Integer = 0 To mStr.Length - 1
HexToDec = Convert.ToInt32(Ha1(i), 16) ' تبدیل مبنای هگزا به دسیمال
Str1 &= IIf(HexToDec > 0, Chr(HexToDec), "")
'===========================================
HexToDec = Convert.ToInt32(Ha2(i), 16) ' تبدیل مبنای هگزا به دسیمال
Str2 &= IIf(HexToDec > 0, ChrW(HexToDec), "")
Next
Console.WriteLine("mStr : " + mStr)
Console.WriteLine("---------------")
Console.WriteLine("ToHex => Hex1 : " + Hex1)
Console.WriteLine("ToStr => Str1 : " + Str1)
Console.WriteLine("---------------")
Console.WriteLine("ToHex => Hex2 : " + Hex2)
Console.WriteLine("ToStr => Str2 : " + Str2)
End Sub
موفق باشید ...