asci2hex

Başlatan james, 19 Ekim 2003, 00:37:46

james

seri porttan gelen ascii dataları nasıl hexe çevirebilirim?
ARAMIYORUM , BULUYORUM

uet

öncelikle ascii karakterlerin sayısal değerini alacaksınız. asc komutuyla

örnek:  asc("a")  bu komut a harfinin

ascii kodu karşılığını verir.
daha sonrası basit zaten. senin elinde 8 bitlik verinin 10'luk düzende karşılığı var bunu matimatiksel işlemleri yaparak hex e çevirebilirisiniz.

örn: a

harfinin asc karşılığı 97

97 yi 16 ya böleceksiniz. kalanları  ve en son bölümü tersten okuyarak yan yana yazacaksınız. ama 16'lı sistemde 9 dan sonraki sayırlar yerine harfler

konur.
10=A
11=B
12=C
13=D
14=E
15=F

bunlarıda yerine koyarsanız sorununuz çözülmüş olacaktır.
kolay gelsin

MuKaN

merhaba.

öncelikle gelen ascii karakterin ascii kodunu bulman gerekli..
bunun için kod olarak:
Alıntı Yapascii_kod=asc(gelen_karakter)

daha sonra vb nin hex fonksiyonunu kullanarak ascii kodunu öğrendiğin karakteri hexe çevirebilirsin.
bunun için:
Alıntı Yaphex_kod=hex(ascii_kod)

böylelikle hex e çevirme işlemini yapmış olursun ama ben hexadecimal fonksiyonu kendim yazmak istiyorum,mantığı anlamak istiyorum diyosan o zaman şöyle bir fonksiyon oluşturabiliriz:

Alıntı Yap
Private Function hexadecimal(gelen As Integer)
Dim kalan As Integer
Dim sonuc As String, ekle As String
   Do While gelen > 0
   kalan = gelen Mod 16
   If kalan > 9 Then
       Select Case kalan
           Case 10
               ekle = "A"
           Case 11
               ekle = "B"
           Case 12
               ekle = "C"
           Case 13
               ekle = "D"
           Case 14
               ekle = "E"
           Case 15
               ekle = "F"
       End Select
   Else
       ekle = kalan
   End If
   gelen = Int(gelen / 16)
   sonuc = sonuc + ekle
   Loop
hexadecimal = StrReverse(sonuc)
End Function
bu fonksiyona ister bir cümle gönder ister bir karakter sana hex karşılığını gönderecektir.

eğer hex ten ascii ye çevirmek istersen o zaman:

Alıntı Yap
Private Function Hex2Ascii(gelen As String)
Dim h1 As Integer, h2 As Integer, ht As Integer
   h1 = kontrol(Left(gelen, 1)) * 16
   h2 = kontrol(Right(gelen, 1)) * 1
   ht = h1 + h2
   Hex2Ascii = Chr(ht)
End Function

Private Function kontrol(karakter As String)
Select Case karakter
   Case "A"
       kontrol = 10
   Case "B"
       kontrol = 11
   Case "C"
       kontrol = 12
   Case "D"
       kontrol = 13
   Case "E"
       kontrol = 14
   Case "F"
       kontrol = 15
   Case Else
       kontrol = Int(karakter)
   End Select
End Function

kullanımlara gelince:
Alıntı Yap

hexadecimal çeviri için:

text1.text=hexadecimal(asc(karakter))

hex den ascii karaktere çeviri için:

text1.text=hex2ascii(hex_kod)

fonksiyonlar tarafımdan yazılmıştır.anlaşılmayan bir nokta olursa yazarsanız elimden geldiğince yardımcı olmaya çalışırım...

kolay gelsin
Dünyayı Daha İyi Yapmayan İnsan,İnsan Değildir! (Kingdom of Heaven)