דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. המרת UCS2 ב VBA

המרת UCS2 ב VBA

מתוזמן נעוץ נעול הועבר ארכיון code613m
3 פוסטים 2 כותבים 376 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מ מנותק
    מ מנותק
    מצפה לגדול
    כתב ב נערך לאחרונה על ידי
    #1

    בזמן האחרון, ניסיתי לקבל את אנשי הקשר מהפלאפון למחשב,דרך פקודות GSM.
    זה אומר ששולחים לפלאפון פקודה דרך יציאת קום, והוא מבצע.
    את יציאת הקום אפשר ליצור דרך הבלוטוס'.

    לדוגמא: להוצאת שיחה, אפשר לשלוח את הפקודה הבאה:

    ATD*2800;
    

    ואחריה "אנטר", והפלאפון יחייג למספר *2800.

    לקבלת אנשי הקשר, יש לשלוח את הקוד הזה:

    AT+CSCS="UCS2";+CPBS="ME";+CPBR=1,1000
    

    (הפקודה הראשונה, מגדירה אותו על פורמט UCS2, שהוא היחיד שתומך בעברית כדלהלן,
    הפקודה השנייה מגדירה אותו על אנשי הקשר של זיכרון הפלאפון, ולא הסים,
    הפקודה השלישית מבקשת את אנשי הקשר, מ1, עד 1000.)

    כשניסיתי לקבל את אנשי הקשר, גיליתי שבעברית, הפורמט היחיד שהוא תומך זה UCS2.
    בשאר הפורמטים, הגיעו סימני שאלה וכו'.
    אבל הוא היה משהו כזה:

    05DE05E605E405D4002005DC05D205D305D505DC
    

    כשניסיתי ליצור איש קשר חדש עם הקוד הנ"ל, נוצר איש קשר בשם "מצפה לגדול".
    ואז ניסיתי להבין איך זה עובד.
    ניסיתי לחפש על הפורמט הזה, ולא מצאתי שום קוד שעבד בפועל.

    בסוף הבנתי שזה מחולק ליחידות בנות 4 תווים, וממילא זה הקוד ההקסדצימלי של תווי היונקוד.

    להלן קוד ההצפנה והפיענוח:
    פיענוח:

    Function DecodingUCS2(str As String) As String
    
    Dim Temp As String
    Dim l, i, hexN As Long
    
    l = Len(str)
    
    Temp = ""
    
    For i = 1 To l Step 4
        
        'המרת המספר מהקסדצימלי, לדצימלי
        hexN = Val("&h" & Mid(str, i, 4))
        
        'קבלת האות בפועל, וצירופה למחרוזת
        Temp = Temp & ChrW(hexN)
    
    Next
    
    DecodingUCS2 = Temp
    
    End Function
    

    הצפנה:

    Function EncodingUCS2(str As String) As String
    
    Dim Temp As String
    Dim l, i As Long
    
    l = Len(str)
    
    Temp = ""
    
    
    For i = 1 To l
    
        'הערך של תו היוניקוד
        unN = AscW(Mid(str, i))
        
        'המרה למספר הקסדצימלי
        hexN = Hex(unN)
        
        'השלמת המספר ל4 תווים, והוספה למחרוזת
        Temp = Temp & Right$("0000" & hexN, 4)
    
    Next
    
    EncodingUCS2 = Temp
    
    End Function
    

    פורסם במקור בפורום CODE613 ב25/12/2017 01:40 (+02:00)

    תגובה 1 תגובה אחרונה
    3
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      גדלת!
      [size=50:3hpo87l6](חוץ מהקטע של הVBA..)[/size:3hpo87l6]

      פורסם במקור בפורום CODE613 ב25/12/2017 01:42 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        לפי מה שאני קורא בויקיפדיה אז זה תואם לUTF16.
        ובמקום הצפנה תשתמש במינוח קידוד.

        פורסם במקור בפורום CODE613 ב25/12/2017 15:10 (+02:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום