เวลาเหมาะสำหรับคำถามนี้ @isaacg เพิ่งเพิ่มฟีเจอร์ใหม่ในวันนี้ซึ่งทำให้ตัวเลขสั้นลงอย่างมาก
เทคนิคพื้นฐานคือการแปลงตัวเลขเป็นฐาน 256 และแปลงเป็นตัวอักษร ++NsCMjQ256N
คุณสามารถทำได้โดยใช้รหัส จากนั้นคุณสามารถใช้สตริงผลลัพธ์ร่วมกับC
ซึ่งทำหน้าที่ตรงกันข้าม (แปลงตัวอักษรเป็น int และตีความผลลัพธ์เป็นตัวเลขฐาน 256) ดังนั้นคุณจะได้รับ 13 C"2ìÙ½}ü¶d"
ตัวอักษร: ตัวอักษรบางตัวไม่สามารถพิมพ์ได้
แต่สังเกตว่าฉันพูด 13 CHARS ไม่ใช่ไบต์ หากฉันคัดลอกตัวอักษรและนับด้วยhttps://mothereff.in/byte-counterจะระบุว่ามีตัวอักษร 13 ตัวและ 18 ไบต์ นี่คือเนื่องจากการเข้ารหัสอักขระของตัวอักษรซึ่งเป็น UTF-8 โดยค่าเริ่มต้น และ UTF-8 อนุญาตให้ใช้อักขระ 1 ไบต์ที่ต่างกัน 2 ^ 7 เท่านั้น ถ่านทุกอันที่c
มีการord(c) > 127
จัดเก็บจริงใช้สองไบต์แทนหนึ่ง
และนี่คือคุณสมบัติใหม่ของ @ isaacg ในการเล่น เขาเปลี่ยนรูปแบบรหัสเริ่มต้นจาก UTF-8 เป็น iso-8859-1 iso-8859 สามารถแสดงถึง 256 ตัวอักษรโดยมีเพียง 1 ไบต์ ดังนั้นตอนนี้คุณสามารถเข้าถึง 13 ไบต์ได้จริง นี่เป็นไปได้เฉพาะกับคอมไพเลอร์มาตรฐานแต่มันไม่สามารถทำงานได้ในคอมไพเลอร์ออนไลน์
jdm.[2.Hd"0"jQ256
ครั้งแรกที่คุณต้องการแปลงหมายเลขที่ฐานสิบหกค่าโดยใช้สคริปต์นี้: 12 32 ec d9 bd 07 7d fc b6 64
นี้จะช่วยให้คุณ หลังจากนั้นคัดลอกตัวเลขเหล่านั้นไปยังไฟล์รหัสของคุณโดยใช้ hex-editor (เช่น hexedit สำหรับ linux)
หมายเหตุ:
- เห็นได้ชัดว่าคุณลบ
"
ท้ายถ้าสตริงเป็นส่วนสุดท้ายของรหัส
- ใช้ได้เฉพาะในกรณีที่ไม่มี
34
(ไบต์22
) ในการแสดงตัวเลขฐาน 256 ของคุณเนื่องจากนี่เป็น"
ถ่านและจะสิ้นสุดสตริง การหลบหนีทำงานแม้ว่า ( 5C 22
)
- Btw เมื่อคุณเปิดไฟล์ด้วย hex-editor คุณจะเห็นไบต์
0A
หรือ0d 0a
ท้ายที่สุดซึ่งคุณสามารถลบได้ สิ่งนี้บ่งบอกถึงจุดสิ้นสุดของบรรทัดเท่านั้น