اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

حرکت در رشته‌های یونیکد

0 امتیاز
248 نمایش

در یک رشته‌ای که با استفاده از پیاده‌سازی‌های یونیکد انجام شده می‌شه مثل یه رشته‌ی کاراکتری معمولی حرکت کرد؟ مثلاً از کاراکتر ۴ ام تا ۷ ام رو خوند؟ یا برعکس از کاراکتر ۵ تا ۳ رو برعکس؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده دوشنبه ۱۴ مرداد ۱۳۹۲ در زبان‌های برنامه‌نویسی توسط prodo  

1 پاسخ

0 امتیاز

در مورد utf-32 که به دلیل اینکه هر کاراکتر ۳۲ بیت هست مثل رشته‌ای از کاراکترهای معمولی هست و می‌شه این کار و به راحتی انجام داد.

در مورد utf-8 و utf-16 هم بله می‌شه به طوری از اول به آخر یا از آخر به اول حرکت کرد. با این تفاوت که نمی‌شه مثل utf-32 دسترسی تصادفی داشت. مثلاً نمی‌شه گرفت کاراکتر ۴ ام در بایت‌های ۱۶ تا ۲۰ هست.

در این دو پیاده‌سازی باید کاراکتر به کاراکتر خوند تا به کاراکتر مورد نظر رسید. برای برعکس خوندن از آخر به اول هم این دو پیاده‌سازی به صورتی طراحی شده‌اند که این کار امکان‌پذیر می‌شه. مثلاً برای utf-8 از آخر به اول این طور می‌خونیم

یک بایت رو می‌خونیم اگه بیت اول‌اش 0 بود یعنی یک کاراکتر ۸ بیتی utf-8 هست.

0xxxxxxx

بنابراین ۸ بیت می‌ریم قبل و دوباره بایت اول رو می‌خونیم. در صورتی که بیت اول ۱ و بیت دوم 0 بود یعنی یک کاراکتر غیر ۸ بیتی داریم. بایت بعدی رو می‌خونیم. این‌قدر این کار و انجام می‌دیم که به بایتی برسیم که حداقل دو بیت اول‌اش 11 باشه.

10xxxxxx-10xxxxxx-11xxxxxx

بنابراین یک کاراکتر ۳ بایتی داریم.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۱۴ مرداد ۱۳۹۲ توسط prodo