হেক্সডাম্প বনাম প্রকৃত ফাইল সামগ্রী


16

আমি যখন hexdump filename.txtআউটপুট হিসাবে নিম্নলিখিত পেতে:

00000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
00000010 

আমি যখন এটি পাই <?= bin2hex(file_get_contents('filename.txt')); ?>:

5aacfb5a8dc0155dd0269124c9e81789

সুতরাং ac5a5afbc08d5d1526d02491e8c98917যখন পিএইচপি পরামর্শ দিচ্ছে যে বিষয়গুলি হ'ল হেক্সডাম্পের পরামর্শ দেওয়া উচিত সেগুলি হওয়া উচিত 5aacfb5a8dc0155dd0269124c9e81789? আমি কি কেবল হেক্সডাম্পের আউটপুটকে সঠিকভাবে ব্যাখ্যা করছি না?


উত্তর:


24

পার্থক্যটি হ'ল বিগ-এন্ডিয়ান বনাম ছোট-এন্ডিয়ান ক্রম

Hexdump আউটপুট প্রথম চার বাইট সমেত শুরু করুন: ac5a 5afb। এখন পেতে বাইট অর্ডারটি স্যুইচ করুন:

5aac fb5a

এটি পিএইচপি আউটপুট সঙ্গে তুলনা করুন:

5aac fb5a

তারা মিলছে।

ডিফল্টরূপে, BSD hexdumpমেশিনের শেষের উপর ভিত্তি করে আউটপুট প্রদর্শন করে। যদি আপনি এটি না চান তবে আপনি -Cশব্দটি বাই শব্দ করে বাই-বাই বাই আউটপুট পাওয়ার বিকল্পটি নির্দিষ্ট করতে পারেন :

$ hexdump filename.txt 
0000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
0000010
$ hexdump -C filename.txt 
00000000  5a ac fb 5a 8d c0 15 5d  d0 26 91 24 c9 e8 17 89  |Z..Z...].&.$....|
00000010

4
কিছুটা যুক্ত করতে: হেক্সডাম্প ষোল-বিট শব্দ হিসাবে ব্যাখ্যা করা ডেটা দেখাচ্ছে। বিন 2hex একবারে একটি বাইট দেখায়, যেমন ASCII অক্ষর বা অনুরূপের জন্য উপযুক্ত হবে। X86 এবং x64 (এবং অন্যান্য ছোট-এন্ডিয়ান সিপিইউ) তে, একটি বহু-বাইট পূর্ণসংখ্যার প্রথম বাইটে কমপক্ষে উল্লেখযোগ্য বিট থাকে। সুতরাং যদি আপনার ফাইলে প্রথম জিনিসটি 16-বিট পূর্ণসংখ্যার মান 1 থাকে, এটি বাইট হিসাবে প্রদর্শিত হয় 01 00 দেখায় তবে এটি 16-বিট শব্দ হিসাবে প্রদর্শিত হবে 0001 (প্রাকৃতিক পাঠের ক্রম, ডানদিকে এলএসবি, যেমনটি আমরা দশমিক সংখ্যার দৈনন্দিন ব্যবহারে করি)। en.wikedia.org/wiki/Endianness
জেমি হানরাহান

@ জ্যামিহানরহানের মন্তব্যে যোগ করতে, পড়ুন: "এবং অন্যান্য সমস্ত লিটল-এডিয়ান সিপিইউ", কারণ এটি শেষের একদম মূল বিষয়।
glglgl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.