PDA

View Full Version : گرفتن عدد تمام کاراکترهای اسکی



moonDark
جمعه 27 بهمن 1391, 20:04 عصر
سلام
میخواستم بدونم که چه طور میشه تمام کاراکتر های جدول اسکی رو به صورت عدد نشون داد؟ منظورم اعداد بین 0 تا 255 هست نه بیشتر و نه کمتر
من خودم برنامشو نوشتم ولی فقط اعداد رو تا 127 درست نشون میده و بعد از اون میشه -128 -127 ... تا -1 که کاراکتر 256ام هست
char buf[256];
for (int i = 0; i < sizeof(buf); i++)
buf[i] = (char)i;
for (int i = 0; i < sizeof(buf); i++)
printf("[Char:%c|Integer:%i]\t", buf[i], buf[i]);

اگه میشه کمک کنید و راهی که میگین طوری باشه که بشه همون عددو دوباره به کاراکترش برگردوند با char c = (char)i; :لبخند::لبخند::لبخند:

the king
جمعه 27 بهمن 1391, 20:34 عصر
سلام
میخواستم بدونم که چه طور میشه تمام کاراکتر های جدول اسکی رو به صورت عدد نشون داد؟ منظورم اعداد بین 0 تا 255 هست نه بیشتر و نه کمتر
من خودم برنامشو نوشتم ولی فقط اعداد رو تا 127 درست نشون میده و بعد از اون میشه -128 -127 ... تا -1 که کاراکتر 256ام هست
char buf[256];
for (int i = 0; i < sizeof(buf); i++)
buf[i] = (char)i;
for (int i = 0; i < sizeof(buf); i++)
printf("[Char:%c|Integer:%i]\t", buf[i], buf[i]);

اگه میشه کمک کنید و راهی که میگین طوری باشه که بشه همون عددو دوباره به کاراکترش برگردوند با char c = (char)i; :لبخند::لبخند::لبخند:

سه تا مورد هست، اول اینکه char به تنهایی بصورت signed تعریف شده، از 128- تا 127، یک unsigned قبلش اضافه کنید تا کامپایلر منظورتون رو متوجه بشه.
مورد دوم اینه که همه کاراکتر ها قابل نمایش نیستند، بعضی هاشون مثل کد 8 کاراکتر قبلی رو هم پاک می کنند (Backspace)، این مورد رو در نظر بگیرید.
مورد سوم اینه که جدول Character set ای که در محیط کنسولی انتخاب شده تعیین می کنه از کاراکتر 128 (نیمه دوم جدول کاراکتر ها) به بعد چه چیزی
نمایش داده بشه (زبانی که به عنوان Character set انتخاب شده)


unsigned char buf[256];
for (int i = 0; i < sizeof(buf); i++)
buf[i] = (char)i;
for (int i = 0; i < sizeof(buf); i++)
printf("[Char:%c|Integer:%i]\t", buf[i], buf[i]);

moonDark
جمعه 27 بهمن 1391, 21:13 عصر
خیلی خیلی ممنون :قلب: