PDA

View Full Version : تبدیل آرایه به عدد



Hamid_PaK
سه شنبه 22 بهمن 1387, 17:43 عصر
این یک آرایه است که توی C تعریف شده :


unsigned char table[32] = {
0x19, 0x05, 0x09, 0x1C, 0x0B, 0x1A, 0x12, 0x03,
0x06, 0x04, 0x0D, 0x1D, 0x15, 0x0E, 0x1B, 0x18,
0x00, 0x07, 0x08, 0x02, 0x13, 0x1F, 0x0C, 0x1E,
0x16, 0x0A, 0x10, 0x0F, 0x01, 0x14, 0x11, 0x17 };

حالا وقتی این دستور اجرا میشه متغیر i حاوی عدد 4453520 خواهد بود.


int i = (long)table;


می خوام بدون کامپایلر چطور این رو محاسبه می کنه !؟ چون که لازم دارم این رو به کد دلفی تبدیل کنم.

با تشکر ، یا حق ...

mehdi.mousavi
چهارشنبه 23 بهمن 1387, 15:51 عصر
این یک آرایه است که توی C تعریف شده : می خوام بدون کامپایلر چطور این رو محاسبه می کنه !؟ چون که لازم دارم این رو به کد دلفی تبدیل کنم.

سلام.
اون عددی که میبینید، آدرس به نقطه شروع حافظه ای هستش که table در اون نگهداری شده و ربطی به اعداد درون آرایه نداره!

Hamid_PaK
پنج شنبه 24 بهمن 1387, 08:17 صبح
یکم گیج کنندست چون که اون آرایه از نوع char هست، و محتوای اون هم کاراکترهای عدد نیست و از همه مهم تر از آدرس این آرایه یه متغیر عددی دیگه رو مقدار دهی کرده!! :

unsigned char table_2[32] = {
0x19, 0x05, 0x09, 0x1C, 0x0B, 0x1A, 0x12, 0x03,
0x06, 0x04, 0x0D, 0x1D, 0x15, 0x0E, 0x1B, 0x18,
0x00, 0x07, 0x08, 0x02, 0x13, 0x1F, 0x0C, 0x1E,
0x16, 0x0A, 0x10, 0x0F, 0x01, 0x14, 0x11, 0x17 };

struct yahoo_fn
{
int type;
long arg1, arg2;
};

struct yahoo_fn yahoo_fntable[5][96] =
...
{{ MULADD, 0x36056CD7, 0x4387 },
{ LOOKUP, (long)table_2, 0 },
...
که بعدا از این آدرس حافظه و مقادیر کد اسلی آن در یک رابطه استفاده کرده.

کل یونیت:

http://paste2.org/p/145516
اگر اشتباه نکرده باشم، من هرچی به دیباگر سر رو کله زدم نتونتم که کد رو به دلفی برگردونم !