|
การแก้ปัญหาก็ไม่ได้ยากเย็นอะไรเลย อาศัยหลักการของ 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
คัดลอกไปที่คลิปบอร์ด
|
|