ערכתי לאחרונה בתאריך 27.02.09 בשעה 21:00 בברכה, TTAsnn
הרי זה לא סתם המרה בין בסיסים אלא בין בסיס 10 ל 2 והיות ואתה יודע את הייצוג הפנימי של int קל מאוד לפעול ככה: #include <stdio.h>int main () { char input_number[] = "12"; char new_number[sizeof(int)*8+1] = ""; int number = atoi(input_number); int shl = 1; int i=0; for (i=sizeof(int)*8-1 ; i>=0 ; i--) { new_number[i] = (number & shl) ? '1' : '0'; shl = shl << 1; } new_number[i] = '\0'; printf("%s\n",new_number); return 0; }
|
זה מדפיס לך את המספר עם כל האפסים המרפדים, אפשר בקלות להעיף אותם ע"י משהו כזה:
i=0; while (new_number[i++] == '0') ; i--; strcpy(new_number,&new_number[i]); printf("%s\n",new_number);
|
ולא לשכוח להכליל את string.h אם אתה משתמש בדוגמא השניה.
זה פתרון למעבר בין בסיס 10 לבסיס 2, כמובן שאם אתה רוצה לעבוד בצורה גנרית יותר, אז צריך בעמת לפעול לפי נוסחאות המעבר בין בסיסים.