thongkorn โพสต์ 2017-10-26 23:49:34

[VB6] แปลงตัวเลขไทยเป็นเลขอารบิค และ แปลงเลขอารบิคเป็นเลขไทย

http://www.g2gnet.com/webboard/images/vb6/ThaiandEngNum.jpg

การแก้ปัญหาก็ไม่ได้ยากเย็นอะไรเลย อาศัยหลักการของ ASCII Code อีกแล้วครับท่านผู้ชม ดังนี้คือ ...
(หมายเหตุ: ตัวเลขแต่ละตัวปกติเราจะเรียกว่า ตัวอักขระ หรือ Character มากกว่านะครับ)

เลข 0 จะมีค่า 48 (ฐาน 10)
เลข 1 จะมีค่า 49 (ฐาน 10)
...
เลข 9 จะมีค่า 57 (ฐาน 10)

เลข ๐ จะมีค่า 240 (ฐาน 10)
เลข ๑ จะมีค่า 241 (ฐาน 10)
...
เลข ๙ จะมีค่า 249 (ฐาน 10)

จากเลขไทย - อารบิค หากจับคู่กัน เช่น 1 กับ ๑ ก็จะมีค่าตัวเลขฐาน 10 อยู่ห่างกัน 192 ค่า

หากเราต้องการแปลงจากเลข 1 อารบิค ก็จะมีค่า ASCII Code = 49 ให้บวกไปอีก 192 ก็จะได้ 241 ใช้คำสั่ง Asc(241) ก็จะได้เลข ๑
หากเราต้องการแปลงจากเลข ๑ ไทย ก็จะมีค่า ASCII Code = 241 ต้องลบออก 192 ก็จะได้ 49 ใช้คำสั่ง Asc(49) ก็จะได้เลข 1
Option Explicit

Private Sub Form_Load()
    Dim strThai As String
    Dim strEng As String
    '// ข้อมูลทดสอบ
    strThai = "๒๕๘๙๖๓๑๔๗"
    strEng = "258963147"
    MsgBox "Thai to Eng : " & NumThai2Eng(strThai) & vbCrLf & "Eng to Thai : " & NumEng2Thai(strEng)
    End
End Sub

'// ฟังค์ชั่นแปลงเลขไทยเป็นอารบิค
Function NumThai2Eng(strThai As String) As String
    Dim strEng As String
    Dim strTemp As String
    Dim i As Byte
    '//strThai = "๐๑๒๓๔๕๖๗๘๙"
    For i = 1 To Len(strThai)
      strTemp = Asc(Mid$(strThai, i, 1)) - 192
      strEng = strEng & Chr(strTemp)
    Next
    NumThai2Eng = strEng
End Function

'// ฟังค์ชั่นแปลงเลขอารบิคเป็นไทย
Function NumEng2Thai(strEng As String) As String
    Dim strThai As String
    Dim strTemp As Byte
    Dim i As Byte
    'strEng = "258963147"
    For i = 1 To Len(strEng)
      strTemp = Asc(Mid$(strEng, i, 1)) + 192
      strThai = strThai & Chr(strTemp)
    Next
    NumEng2Thai = strThai
End Function
หน้า: [1]
ดูในรูปแบบกติ: [VB6] แปลงตัวเลขไทยเป็นเลขอารบิค และ แปลงเลขอารบิคเป็นเลขไทย