এমন কোনও অনেলিনার আছে যা একটি বাইনারি ফাইলকে ছোট এডিয়ান থেকে বড় এন্ডিয়ানে রূপান্তর করে?


14

এবং বিপরীতভাবে.

প্রাসঙ্গিক হলে আমি রেডহ্যাট চালাচ্ছি।


6
বাইনারি ফাইল কি ধরণের?
স্টাফেন চেজেলাস

1
যাইহোক, যে কোনও ফাইল ফর্ম্যাটের জন্য, আমি নিশ্চিত যে পার্ল এবং প্যাক / আনপ্যাক ব্যবহার করে আপনি এর প্রান্তিকতা রূপান্তর করতে ওয়ান-লাইনার লিখতে পারেন । কিছু ফর্ম্যাটের জন্য এটি অন্যদের চেয়ে লম্বা লাইন হবে। ;-)
ইলমারি করোনেন

উত্তর:


34

আপনি এটি করতে পারবেন না কারণ এ জাতীয় রূপান্তরকরণের জন্য আপনাকে বাইনারি সামগ্রীর অর্থটি জানতে হবে।

উদাহরণস্বরূপ যদি বাইনারি ফাইলের অভ্যন্তরে একটি স্ট্রিং থাকে তবে এটি রূপান্তরিত হবে না এবং একটি চার বাইট পূর্ণসংখ্যা দুটি বাইট পূর্ণসংখ্যার চেয়ে পৃথক চিকিত্সার প্রয়োজন হতে পারে।

অন্য কথায়, বাইট অর্ডার রূপান্তরকরণের জন্য আপনার একটি ডেটা টাইপের বিবরণ প্রয়োজন।


7
আমি শুধু এটা বলতে ছিল। এটি কেবল প্রতিটি জোড়া বাইট অদলবদলের মতো সহজ নয়। উদাহরণস্বরূপ, বাইজেনডিয়ায় একটি 4 বাইট পূর্ণসংখ্যা 01 02 03 04 এটিকে ছোট এন্ডিয়ানতে দেখতে পারে 04 02 03 01 না 02 01 04 03 cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html
রব

1
সম্মত হয়েছে, কাঁচা, টাইপলেস বাইট স্ট্রিমের অবসান ঘটাতে কোনও ধারণা নেই ... ওপি যদি তার প্রশ্নটি সম্পাদনা না করে তবে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
থমাস

[উদ্ধৃতি আবশ্যক] - আফাইক, যদি না কোনও অ্যাপ্লিকেশন স্পষ্টভাবে কিছু বাইট অর্ডার সংরক্ষণ করে এবং অন্যকে না, তবে বাইট বা শব্দের পক্ষে ধারাবাহিকভাবে ক্রমানুসারে অর্ডার করা স্বাভাবিক।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
@ ডেনিস উইলিয়ামসন: একটি ইউটিএফ -8 বা এএসসিআইআই স্ট্রিংয়ের শেষ নেই। ইউএসএফ -8 বায়ার ক্রম নির্দিষ্ট করে যখন ASCII 7 বিট এবং মাল্টি-বাইট টোকেন নেই। একটি ইউটিএফ -16 স্ট্রিংয়ের শেষ নেই এবং সেই শেষটিকে চিহ্নিত করার জন্য কোনও বিওএম থাকতে পারে বা থাকতে পারে। উইন্ডোজ বা জাভার সাথে ইন্টারেক্ট করার উদ্দেশ্যে একটি ইউনিক্স বাইনারিতে উভয় ধরণের স্ট্রিং থাকতে পারে যার অর্থ আপনাকে রূপান্তর করার সময় তাদের আলাদা করতে হবে।
কেভিন

আমি এখানে এমন একটি প্রোগ্রাম সন্ধান করতে এসেছি যেখানে আপনি এটিকে ডেটা বর্ণনা এবং ডেটা দেন এবং এটি রূপান্তর করে। এখন পর্যন্ত আমি এই জাতীয় কোনও প্রোগ্রাম খুঁজে পাইনি তবে এর অর্থ এই নয় যে এটি করা যায় না।
লেভি মরিসন

32

এর সাথে বাইটসপআপ করতে পারেন dd। এটা কি পর্যাপ্ত? যদি তা না হয় তবে দয়া করে একটি ইনপুট ফাইল এবং প্রত্যাশিত আউটফিলের উদাহরণ দিতে আপনার প্রশ্নটি আপডেট করুন।

echo hello >infile
dd conv=swab <infile >outfile

hex infile
   0000 68 65 6c 6c 6f 0a                                 hello.
hex outfile
   0000 65 68 6c 6c 0a 6f                                 ehll.o

2

যদি আপনি ফাইলের বিষয়বস্তুগুলি সম্পর্কে যত্নশীল না হন এবং কেবল বাইটগুলি স্যুপ করতে চান তবে এন্ডকনভিটি চেষ্টা করুন । এটি স্ট্যান্ডার্ড বাইট রূপান্তর ফাংশনগুলির চারপাশে কেবল একটি মোড়ক, সুতরাং এটি 2, 4 এবং 8 বাইট দীর্ঘ পূর্ণসংখ্যার দ্বারা রূপান্তরকে সমর্থন করে। এটি একটি লাইনার নয় যদিও এটি পৃথক প্রোগ্রাম।


0

শব্দের (32-বিট) আকার ধরে ধরে ফাইলের বোধগম্যতা পরিবর্তন করার জন্য, এই 1 টি লাইনারের কাজ করা উচিত:

hexdump -v -e '1/4 "%08x"' -e '"\n"' input_file | xxd -r -p > output_file
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.