جدول محتوایی

تبدیل Hex به ASCII در لینوکس

دسته ای از کاراکترهای هگزا دسیمال دارید و می خواهید آنها را به یک سیستم اعشاری قابل خواندن (ASCII) تبدیل کنید؟ روش های مختلفی برای تبدیل Hex به ASCII در لینوکس وجود دارد. در صورت لزوم می توانید از این روش ها در اسکریپت ترمینال خود نیز استفاده کنید.

هگزادسیمال یا Hex یک سیستم اعداد است که در آن از ترکیبی از اعداد (0-9) برای نمایش مقادیر از 0 تا 9 و حروف الفبا (A-F) برای نمایش مقادیر از 10 تا 15 استفاده می کنید.

ممکن است پیچیده به نظر برسد، اما در هر صورت بهتر از شماره گذاری باینری است که همه چیز 1 و 0 است.

Hex چند دهه پیش به طور گسترده در میکروکنترلرها استفاده شد. شما هنوز هم می توانید آن را در حال استفاده ببینید، به خصوص با پالت رنگ Hex که برای نشان دادن سایه های مختلف رنگ استفاده می شود.

از سوی دیگر، ASCII مخفف American Standard Code for Information Interchange است و کاربرد کاملا متفاوتی نسبت به هگزادسیمال دارد. ASCII روشی است که برای تبدیل کاراکترهای زبان عادی به باینری استفاده می شود تا کامپیوترها بتوانند دستورالعمل ها را از سمت ما درک کنند.

از طریق این مقاله آموزشی، راه‌های مختلفی را به شما ارائه می‌دهیم که از طریق آنها می‌توانید به راحتی کاراکتر های را به ASCII تبدیل کنید.

 

تبدیل HEX به ASCII در لینوکس

 

خرید سرور مجازی ایران با بهترین قیمت

 

روش 1: تبدیل رشته های هگزی ذخیره شده در فایل متنی

بنابراین اگر یک رشته Hex ذخیره شده در زیر یک فایل متنی دارید، می توانید از این روش برای تبدیل رشته Hex ذخیره شده به ASCII در لینوکس استفاده کنید.

رشته هگز من در یک فایل hex.txt ذخیره می شود، بنابراین برای تبدیل آن رشته، باید دستور داده شده را دنبال کنم:

cat hex.txt | xxd -r -p && echo ''

 

تا کنون این راحت‌ترین راه است، زیرا لازم نیست رشته‌های هگز را بارها و بارها وارد کنید و بهترین بخش این است که می‌توانید چندین رشته Hex را ذخیره کرده و با استفاده از همان دستور آنها را تبدیل کنید.

دستور cat

 

روش 2: با استفاده از دستور xdd

xdd یک ابزار خط فرمان لینوکس است که می تواند از متن داده شده یک HEX هگز dump ایجاد کند و بالعکس. ابتدا رشته هگزا را با استفاده از دستور echo وارد می کنم و با استفاده از pipe آن را با xdd جفت می کنم.

echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p

 

در اینجا از دستور -r برای تبدیل کد هگز به ASCII و -p برای چاپ متن ساده استفاده می شود.

sagar@itsfoss:~$ echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p 
iranica 123sagar@itsfoss:~$ 

 

همانطور که در بالا می بینید، خروجی با دستور در ترمینال مخلوط می شود زیرا خروجی تبدیل شده دارای کاراکتر خط جدید نیست. برای خوانایی بیشتر، می توانید echo ” را به دستور بالا اضافه کنید.

echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p && echo ''

تبدیل HEX در لینوکس

 

روش 3: تبدیل HEX با استفاده از دستور printf لینوکس

بله، می توانید کاراکتر های HEX را با استفاده از دستور bash printf لینوکس به ASCII تبدیل کنید. در اینجا، من می خواهم از گزینه \x استفاده کنم که ورودی 1 یا دو رقمی را مطابق شکل زیر دریافت می کند:

printf '\x4c\x69\x6e\x75\x78\x68\x61\x6e\x64\x62\x6f\x6f\x6b\x20\x31\x32\x33'

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

دستور printf

 

روش 4: با استفاده از دستور dc

ممکن است تعجب کنید که چگونه می توانیم از ماشین حساب deck (dc) برای تبدیل hex به ASCII استفاده کنیم و من دقیقاً به شما نشان خواهم داد که چگونه.

echo "16i 4C696E757868616E64626F6F6B20313233 P" | dc

 

در اینجا، 16i برای نشان دادن اینکه با ریشه hex سر و کار دارید و P برای چاپ خروجی از دستور dc استفاده می شود.

با استفاده از دستور بالا، نتیجه ای مشابه آنچه در زیر داده شده است دریافت خواهید کرد:

 

روش 5: تبدیل کاراکتر های Hex با استفاده از دستور Perl در لینوکس

بنابراین اگر سیستم شما پرل را نصب کرده باشد، می توانید به راحتی با استفاده از این روش هگز را به اسکی تبدیل کنید. فقط کد هگز من را با شما در دستور داده شده تعویض کنید و تمام.

echo 4c696e757868616e64626f6f6b20313233 | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' && echo ''

و با نتایجی مطابق شکل زیر مواجه خواهید شد:

دستور Perl

 

روش 6: با استفاده از دستور sed

این روش کمی شبیه به روش بالا است اما در اینجا شما از sed برای فیلتر کردن و تبدیل Hex به ASCII در لینوکس با استفاده از عبارت معمولی استفاده می کنید.

echo -n 4c696e757868616e64626f6f6b20313233 | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf && echo ''

با استفاده از piping، رشته هش را از طریق اکو جمع آوری کردیم. آن را با جفت کردن sed به عبارت داده شده تبدیل کردیم و خروجی را همانطور که داده شد دریافت کردیم.

تبدیل Hex در لینوکس با sed


 

در این مقاله تمام روش های موجود برای تبدیل Hex به ASCII در لینوکس را با هم بررسی کردیم. بطور کلی، من روش اول را به شما پیشنهاد میکنم. زیرا هم راحت ترین روش است و هم سریعترین.

 

17رای - امتیاز 4.9 ممنون از امتیازی که دادید..!

دسته بندی شده در: