Thời gian hoàn hảo cho câu hỏi này @isaacg vừa thêm một tính năng mới ngày hôm nay, cho phép rút ngắn số lượng như vậy vô cùng.
Kỹ thuật cơ bản là chuyển đổi số thành cơ sở 256 và chuyển đổi nó thành ký tự. Bạn có thể làm điều này bằng cách sử dụng mã ++NsCMjQ256N
. Sau đó, bạn có thể sử dụng chuỗi kết quả kết hợp với C
, chuỗi này hoàn toàn ngược lại (chuyển đổi ký tự thành int và diễn giải kết quả dưới dạng số cơ sở 256). Vì vậy, bạn nhận được 13 ký tự : C"2ìÙ½}ü¶d"
. Một số ký tự không thể in được.
Nhưng lưu ý rằng tôi đã nói 13 CHARS, không phải byte. Nếu tôi sao chép các ký tự và đếm số bằng https://otherseff.in/byte-count , nó sẽ ghi 13 ký tự và 18 byte. Điều này là do mã hóa ký tự của ký tự, là UTF-8 theo mặc định. Và UTF-8 chỉ cho phép 2 ^ 7 ký tự 1 byte khác nhau. Mỗi char c
với ord(c) > 127
thực sự được lưu trữ bằng hai byte thay vì một.
Và đây là tính năng mới của @ isaacg . Anh ta đã thay đổi định dạng mã mặc định từ UTF-8 thành iso-8859-1. iso-8859 có thể biểu thị 256 ký tự chỉ với 1 byte. Vì vậy, bây giờ bạn thực sự có thể đạt 13 BYTES. Điều này chỉ có thể với trình biên dịch tiêu chuẩn , tuy nhiên, điều này không hoạt động trong trình biên dịch trực tuyến.
Trước tiên, bạn muốn chuyển đổi số thành giá trị hex bằng cách sử dụng tập lệnh này : jdm.[2.Hd"0"jQ256
. Điều này mang lại cho bạn 12 32 ec d9 bd 07 7d fc b6 64
. Sau đó sao chép các số đó vào tệp mã của bạn bằng trình soạn thảo hex (ví dụ hexedit cho linux).
Để ý:
- Rõ ràng bạn loại bỏ phần
"
cuối, nếu chuỗi là phần cuối của mã.
- Điều này chỉ hoạt động nếu không có
34
(byte 22
) trong biểu diễn cơ sở 256 của các số của bạn, vì đây là "
char và sẽ kết thúc chuỗi. Thoát công trình mặc dù ( 5C 22
).
- Btw, khi bạn mở một tệp bằng trình soạn thảo hex, bạn có thể sẽ thấy byte
0A
hoặc 0d 0a
ở cuối, bạn có thể xóa. Điều này chỉ cho thấy sự kết thúc của dòng.