كيفية تحويل السلسلة إلى ملف صحيح ثنائي باستخدام سطر الأوامر تحت لينكس

StackOverflow https://stackoverflow.com/questions/422840

  •  05-07-2019
  •  | 
  •  

سؤال

ما أريده هو أن تأخذ عددا صحيحا ممثلة كسلسلة، على سبيل المثال "1234"، وتحويله إلى ملف يسمى كثافة العمليات، التي تحتوي على 32 بت endian كبيرة صحيح، بقيمة 1234.

والطريقة الوحيدة التي يمكنني أن أحسب للقيام بذلك هو شيء من هذا القبيل

echo 1234 | awk '{printf "0: %08X", $1}' | xxd -r > int

والتي هي سيئة قليلا!

لا أحد يعرف طريقة أفضل؟

هل كانت مفيدة؟

المحلول 2

ورؤية طيب جيدا أن مارك وليامز يبدو أنه قد ذهب بدون اذن انا سيتم نشر النسخة المصححة من جوابه

echo 1234 | perl -e 'print pack("N", <STDIN>); > int

نصائح أخرى

وهناك طريقة أبسط قليلا ستكون كما يلي:

printf "0: %08X" 1234 | xxd -r > int

وهذا يبدو لإنتاج نفس الإخراج على نظام بلدي. مما لا شك فيه للتحقق perldoc -f pack.

وecho '1234' | perl -e 'print pack("nn", 0,<STDIN>);' > int

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top