PDA

View Full Version : سوال: تبديل هگزا به عدد دهدهي



noshin156
دوشنبه 01 خرداد 1391, 14:19 عصر
سلام
من مي خوام بدونم در MFC تابعي براي تبديل اعداد هگزا به دهدهي وجود دارد؟
اگر نيست ميشه براي تبديل اين دو عدد به يكديگر منو راهنمايي كنيد؟
من فقط اينو مي دونم كه براي تبديل بايد عدد را ابتدا به مبناي دو ببرم و سپس به مبناي 10 آيا روش بهتري هم وجود دارد؟
با تشكر

mehdi.mousavi
دوشنبه 01 خرداد 1391, 15:13 عصر
سلام من مي خوام بدونم در MFC تابعي براي تبديل اعداد هگزا به دهدهي وجود دارد؟ اگر نيست ميشه براي تبديل اين دو عدد به يكديگر منو راهنمايي كنيد؟ من فقط اينو مي دونم كه براي تبديل بايد عدد را ابتدا به مبناي دو ببرم و سپس به مبناي 10 آيا روش بهتري هم وجود دارد؟ با تشكر

سلام.
برای تبدیل رشته مورد نظر هگز به دسیمال، میتونید بدین شکل عمل کنید:


char szInput[] = "0x3d81";
ULONG l = strtoul(szInput, NULL, 16);

موفق باشید.

پاورقی: برای اطلاعات بیشتر به این آدرس (http://msdn.microsoft.com/en-us/library/w4z2wdyc%28v=vs.100%29.aspx) مراجعه کنید.

noshin156
سه شنبه 02 خرداد 1391, 10:09 صبح
از راهنمايي شما ممنونم ولي من يك آرايه 16 بيتي از اعداد هگزا دارم و مي خوام هشتا هشتا از اين آرايه جدا كنم و تبديل كنم با اين دستور شما نميشود آرايه ها را تبديل كرد

mehdi.mousavi
سه شنبه 02 خرداد 1391, 11:07 صبح
از راهنمايي شما ممنونم ولي من يك آرايه 16 بيتي از اعداد هگزا دارم و مي خوام هشتا هشتا از اين آرايه جدا كنم و تبديل كنم با اين دستور شما نميشود آرايه ها را تبديل كرد

سلام.
لطفا اگر ممکنه یه نمونه واقعی از این آرایه رو اینجا قرار بدید تا بهتون پاسخ بدم.

موفق باشید.

noshin156
سه شنبه 02 خرداد 1391, 11:47 صبح
خودم يه كد نوشتم ولي اون كارايي لازم را نداردشما روش بهتري توصيه مي كنيد؟




char p[19]="0xAA0184BC14D12A5A";
unsigned long k;
char c[9]="";
static int i=2;
int l;
if(i<(l=strlen(p)))
{
strncpy(c,p+i,8);
k=strtoul(c,NULL,16);
m_txt=k;
m_txt1=c;
i+=8;
UpdateData(false);
}

mehdi.mousavi
سه شنبه 02 خرداد 1391, 16:11 عصر
سلام.
میتونید بدین شکل عمل کنید:

const int chunkSize = 8;
char p[] = "AA0184BC14D12A5A\0", result[chunkSize + 1], *ptr = p;
while(ptr && ptr[0] != NULL)
{
strncpy_s(result, ptr, chunkSize);
ptr += chunkSize;

cout << strtoul(result, NULL, 16);
}


موفق باشید.