לרפד באפסים – מספר הקסידצימלי לascii

פורומים אפיון ופיתוח פריוריטי לרפד באפסים – מספר הקסידצימלי לascii

  • Post
    snoof123
    משתתף
    שלום,
    אני צריך לעשות פעולה שדומה ל
    itoa(n,m)
    (פעולה שבה יש לי מספר נניח 12 ואז אני מרפד אותו באפסים כדי להגיע לסכום הספרות הנדרש – נניח 5, במקרה כזה התוצאה: 00012).

    האם מישהו מכיר דרך לעשות את זה על מספר הקסדצימלי?

    אשמח לאיזה פיתרון חביב שלא כולל מלא תנאים צרובים בקוד 🙂

מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • Replies
    PriorityDev
    משתתף
    IL
    HTOI ואחר כך ITOA ?
    snoof123
    משתתף
    אבל אז אני מקבל את המספר הדצימלי בASCII ולא את המספר שאני רציתי.
    המחשה:
    המספר ההקסדצימלי הוא c
    אני רוצה לקבל:
    0000c
    ולא:
    00012
    PriorityDev
    משתתף
    IL
    אז תכתוב משהו כזה:
    /*----------------------------------------*/
    :HEXA = 'c';
    :ZEROS = '';
    :CNT = 8 - STRLEN(:HEXA);
    /*---------*/
    LABEL 333;
    :ZEROS = STRCAT(:ZEROS, '0');
    :CNT = :CNT - 1;
    LOOP 333 WHERE :CNT > 0;
    /*---------*/
    :AHEXA = STRCAT(:ZEROS, :HEXA);
    /*----------------------------------------*/

    אפשר גם לשים את הקוד הנ"ל בטריגר במסך func ולקרוא לו ב-INCLUDE.
    snoof123
    משתתף
    תודה רבה, רעיון נפלא 🙂
    (קיוויתי שיש איזו פקודה שנעלמה מהSDK ).
    PriorityDev
    משתתף
    IL
    כנראה שפקודה מובנית אין. אבל אם פעם אחת שמים את זה בטריגר, אז אין הרבה הבדל.
    PriorityDev
    משתתף
    IL
    אפשר אפילו לקצר:
    :HEXA = 'c';
    :ZEROS = '';
    /*---------*/
    LABEL 333;
    :ZEROS = STRCAT(:ZEROS, '0');
    LOOP 333 WHERE STRLEN(:ZEROS) < (8 - STRLEN(:HEXA));
    /*---------*/
    :AHEXA = STRCAT(:ZEROS, :HEXA);
    yitzchok
    משתתף
    IL
    נו נו, רוצים לרפד לרוחב 8?

    בשורה אחת:


    RSTRIND(STRCAT('00000000',:HEXA),1,8)

    אפשר גם RSUBSTR אם רוצים להיות מאוד מודרניים

    וכל הפתרונות בעצם רק מרפדים, סומכים על הקלט שהוא הקסדצימל תקין ולא סתם טקסט…

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    PriorityDev
    משתתף
    IL
    יצחק,
    1. הקוד שכתבתה טוב למספר בעל אורך 1 (במציאות האורך משתנה ולכן מוסיפים אפסים לפי הצורך).
    2. הכוונה היא גם שבמקום 8 (סה"כ אורך) אפשר למסור משתנה.
    yitzchok
    משתתף
    IL
    1. חושב שאתה טועה. תעשה dump לדו"ח כלשהוא.

    2. מסכים באופן כללי אבל זה חוסך באפר/טריגר ומתאים לשימוש ב-select. במצב כזה יתכן שבכל שימוש עורך הפלט הנדרש הוא ידוע מראש.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    PriorityDev
    משתתף
    IL
    1. צודק.
מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.