كيفية تحويل السلسلة إلى ملف صحيح ثنائي باستخدام سطر الأوامر تحت لينكس
سؤال
ما أريده هو أن تأخذ عددا صحيحا ممثلة كسلسلة، على سبيل المثال "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
لا تنتمي إلى StackOverflow