[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]