হেক্সডাম্পের মতো কোনও ইউটিলিটি কি অ-নেটিভ এন্ডিয়ান-নেস পরিচালনা করবে?


6

বাইনারি ডেটা পড়তে এবং যথাযথভাবে ফর্ম্যাট করার জন্য হেক্সডাম্পের দক্ষতা যাতে এটি উদাহরণস্বরূপ, বায়ুতে পাইপ করা যায় তবে খুব দরকারী তবে আমার নিয়মিত ফাইলগুলি পড়া দরকার যেখানে বাইনারি ডেটা সিস্টেমের কাছে স্থানীয় থেকে আলাদা ইন্ডিয়ান-নেসের হয় । বিশেষত, আমাকে একটু এন্ডিয়ান মেশিনে বড়-এন্ডিয়ান ডেটা পড়তে হবে। আমার আদর্শ সমাধানটি এন্ডিয়ান-নেসকে বিপরীত করার জন্য একটি সুইচ সহ "হেক্সডাম্প" হবে, তবে এই জাতীয় স্যুইচটি বিদ্যমান বলে মনে হয় না।

এই সমস্যার কোনও ভাল "পরবর্তী-সেরা" সমাধান আছে কি?


এটি সম্ভবত সুপার-ইউজারের বিষয় নয় এবং এর পরিবর্তে ইউনিক্স এবং লিনাক্সে থাকা উচিত দয়া করে আমার উত্তরটি পর্যালোচনা করুন তবে যেটি বেছে নেওয়া হয়েছে তার চেয়ে ভাল পদ্ধতির জন্য।
ইভান ক্যারল

উত্তর:


3

হেক্সডাম্পের মতো কোনও ইউটিলিটি কি অ-নেটিভ এন্ডিয়ান-নেস পরিচালনা করবে?

হ্যাঁ, ইউটিলিটিটিকে পার্ল বলা হয়।

আসলে আসলে ডেটা :: হেক্সডাম্পার - যদিও আপনি নিজের নিজস্ব রোল করতে পারেন ।

number_format
একটি স্ট্রিং নির্দিষ্ট করে যে কীভাবে ডেটা ফর্ম্যাট করবে। এটি নিম্নলিখিত যে কোনও একটি হতে পারে,
পার্লসের প্যাক ফাংশন করার জন্য আপনি যা দেখতে পাচ্ছেন তার একই অর্থ রয়েছে:

সি - স্বাক্ষরযুক্ত চর
এস - স্বাক্ষরবিহীন 16-বিট, দেশীয় শেষ ian
ভি বা এস <- স্বাক্ষরযুক্ত 16-বিট, লিটল-এন্ডিয়ান
n বা S> - স্বাক্ষরযুক্ত 16-বিট, বিগ-এন্ডিয়ান
এল - স্বাক্ষরবিহীন 32-বিট, দেশীয় শেষ ian
ভি বা এল <- স্বাক্ষরযুক্ত 32-বিট, ছোট-এন্ডিয়ান
এন বা এল> - স্বাক্ষরযুক্ত 32-বিট, বিগ-এন্ডিয়ান
প্রশ্ন - স্বাক্ষরবিহীন -৪-বিট, দেশীয় শেষ ian
প্রশ্ন <- স্বাক্ষরিত 64-বিট, ছোট-এন্ডিয়ান
প্রশ্ন> - স্বাক্ষরযুক্ত 64-বিট, বিগ-এন্ডিয়ান

আমি পার্সের উপর নির্ভর করে এবং হেক্সডাম্পের তুলনায় অতিরিক্ত স্বীকৃত (স্বীকৃতভাবে খুব সীমাবদ্ধ) করায় সত্যই সন্তুষ্ট নই, তবে নিশ্চিত হয়েছি যে আরও ভাল বিকল্পের অস্তিত্ব নেই।
EHN

4

কমপক্ষে 16-বিট শব্দের জন্য যে কোনও এটি এটিকে পাইপ করতে পারে dd conv=swab,

cat file.dat | dd conv=swab | od -t x2

1

হিসাবে pixelbeat প্রস্তাব দেওয়া, আপনি ব্যবহার করতে পারে objcopy :

$ objcopy -I binary -O binary --reverse-bytes=num inputfile.bin outputfile.bin

যেখানে num16 বিট শব্দের জন্য 2, 32 বিট শব্দের জন্য 4 এবং 64 বিট শব্দের জন্য 8 8

দুর্ভাগ্যক্রমে অ্যাজজকপিতে stdinআউটপুট থেকে ইনপুট গ্রহণ বা লেখার কোনও বিকল্প নেই stdout, সুতরাং এটি পাইপ হিসাবে ব্যবহার করার জন্য আপনাকে একটি মোড়ক স্ক্রিপ্ট লিখতে হবে যা অস্থায়ী ফাইল তৈরি করে।

এই উত্তরটি অনুলিপি করা হয়েছে থেকে https://stackoverflow.com/a/19288235/1979048 থেকে https://serverfault.com/a/329207/157443


1

কেবল ব্যবহার করুন od(8.23 বা তার বেশি) এটি লিনাক্স স্ট্যান্ডার্ড বেসের অংশ, এবং আমার মতে এটি hexdumpসবকিছুর চেয়ে ভাল । এটি একটি endianবিকল্প সরবরাহ করে,

‘--endian=order’
Reorder input bytes, to handle inputs with differing byte orders, or to provide consistent output independent of the endian convention of the current system. Swapping is performed according to the specified --type size and endian order, which can be ‘little’ or ‘big’.

আপনি এটি এভাবে ব্যবহার করতে পারেন,

od --endian big -x

এটি যুক্ত করার জন্য প্যাচটি 2014 এ চালু হয়েছিল


1
ওডের আমি ব্যবহার করি এমন কোনও সিস্টেমে --endian বিকল্প নেই (জিএনইউ কোর্টিলস 8.22 বা ওএস এক্স 10.11.6)
ইএন

1
@ এএইচএন এটি 8.23 ​​সালে প্রতিশ্রুতিবদ্ধ হয়েছিল যা ছিল 2014. এটি প্রতিফলিত করার জন্য আপডেট হওয়া প্রশ্ন।
ইভান ক্যারল

0

ডিডি কন = swab <file.dat | hexdump


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