Microsoft पेंट के साथ इस व्यक्ति ने "हैलो वर्ल्ड" कोड कैसे बनाया?


99

मैंने पिछले कुछ दिनों में इसे देखा है और यह पता नहीं लगा सका कि यह कैसे काम करता है। मैं जिस वीडियो के बारे में बात करता हूं वह यहां है :

यह स्टैक ओवरफ्लो प्रश्न से शीर्ष रेटेड उत्तर है: इस कार्यक्रम को तीन संकलक द्वारा अस्वीकार क्यों किया गया?

यह बिटमैप "हैलो वर्ल्ड" के लिए C ++ प्रोग्राम कैसे दिखा सकता है?


7
बिटमैप मान एक फ़ाइल में बिट्स हैं। यदि आप ASCii के रूप में उन बिट्स की व्याख्या करते हैं तो यह कुछ दिखाएगा। बिट्स का सावधानीपूर्वक चयन और आप एक बिटमैप (मॉडुलो फ़ाइल हेडर) में एक पत्र या संविधान लिख सकते हैं। समझने के लिए क्या नहीं है? यह सिर्फ एक मूर्खतापूर्ण बात है, दुनिया के सबसे खराब संपादक की तरह।
थॉमस एम। डुबिसन

3
क्या यह की कीमत के लिए, वहाँ है कम से कम एक प्रोग्रामिंग भाषा जहां स्रोत कोड एक छवि के रूप में व्यक्त किया जाता है। ऐसा नहीं है कि यह विशेष छवि इसके साथ काम करेगी, लेकिन ...
माइकल मैडसेन

1
वह धागा जिसे आप stackoverflow.com/questions/5508110/… के
phwd

6
वह एनिमेटेड GIF मेरे ब्राउज़र (IE और Chrome) को मार रहा है - एनिमेटेड GIF की तुलना में वीडियो पोस्ट करने के बेहतर तरीके हैं।
मुसिएनेसिस

3
@MusiGenesis ओह, मैं 2011 की समस्याओं को कैसे याद करता हूं।
चार्ल्स क्लेटन

जवाबों:


56

एक BMP (DIB) छवि एक हेडर द्वारा बनाई जाती है, जिसके बाद 1 रंग डेटा असम्पीडित होता है (24 बीपीपी छवियों के लिए यह 3 बाइट प्रति पिक्सेल है, रिवर्स पंक्ति ऑर्डर में संग्रहीत और 4 बाइट्स पंक्ति स्ट्राइड के साथ)।

रंग डेटा के लिए बाइट्स का उपयोग रंगों का प्रतिनिधित्व करने के लिए किया जाता है (यानी उनमें से कोई भी फ़ाइल प्रारूप 2 द्वारा "अनिवार्य" नहीं है , वे सभी प्रत्येक पिक्सेल के रंग से आते हैं), और पिक्सेल रंग और बाइट्स के बीच एक परिपूर्ण 1: 1 पत्राचार लिखा है फ़ाइल में; इस प्रकार, पूरी तरह से चुने गए रंगों का उपयोग करके आप वास्तव में फाइल में जो कुछ भी चाहें लिख सकते हैं (हेडर के अपवाद के साथ)।

जब आप नोटपैड में उत्पन्न फ़ाइल खोलते हैं, तो रंग डेटा को पाठ के रूप में दिखाया जाएगा; आप अभी भी हेडर ( BMपाठ की शुरुआत से हिस्सा) से स्पष्ट रूप से देख सकते हैं , जो फ़ाइल प्रारूप द्वारा अनिवार्य है।

मेरी राय में यह वीडियो इस तरह से किया गया था: पहले लेखक ने बिटमैप के लिए आवश्यक आकार की गणना की, और एक रंग से भरे हुए सही आकार की DIB फ़ाइल बनाई जो एक साधारण पैटर्न (जैसे सभी बाइट्स 65 => 'A') तक फैली हुई है ; फिर इस तरह के पैटर्न को "पेलोड" कोड के साथ बदल दिया, जैसा कि वीडियो में दिखाया गया है।

ध्यान दें कि नोटपैड के साथ पूरी चीज़ को हैंड-क्राफ्ट करना असंभव नहीं है - रंग चयनकर्ता संवाद, एक ASCII तालिका और DIB प्रारूप के एक बुनियादी ज्ञान के साथ इसे किया जा सकता है, लेकिन यह बहुत धीमी और त्रुटि-प्रवण होगा।

DIB प्रारूप के बारे में अधिक जानकारी


  1. RLE संपीड़ित DIBs हैं, लेकिन इस मामले में असम्पीडित बिटमैप्स का उपयोग किया जाता है (और वे वास्तव में शायद ही कभी भी उपयोग किए जाते हैं)।
  2. स्ट्राइड के अपवाद के साथ, जिसे 4 बाइट्स की कई पंक्तियों का उपयोग करने से बचा गया था।

19

मुझे लगता है कि आप अप्रैल फूल सवालों में से एक के जवाब का जिक्र कर रहे हैं।

मेरा अनुमान है कि प्रत्येक पिक्सेल के पास इसके लिए एक द्विआधारी प्रतिनिधित्व है। और स्रोत कोड में प्रत्येक वर्ण के पास इसके लिए एक द्विआधारी प्रतिनिधित्व है।

प्रोग्राम बनाने वाले व्यक्ति ने प्रत्येक पिक्सेल के लिए रंग काम किया होगा जिसमें एक द्विआधारी प्रतिनिधित्व होगा जो प्रत्येक वर्ण के अनुरूप होगा।


7
+1: अंत में, बाइट्स बाइट्स हैं। नोटपैड उन्हें पाठ के पात्रों के रूप में व्याख्या करता है जबकि mspaint उन्हें बिटमैप में पिक्सेल के रूप में व्याख्या करता है। प्रमुख "जंक" पाठ अतिरिक्त छवि जानकारी है (संभवतः संकल्प, संस्करण, आदि जैसी चीजें)।
क्रिस शिमिच

6

एक सैद्धांतिक कंप्यूटर विज्ञान के दृष्टिकोण से, यह पूछना दिलचस्प होगा, अगर हर कार्यक्रम को इस तरह से लिखा जा सकता है ताकि, बिटमैप के रूप में देखा जाए, तो आपने वास्तव में स्रोत कोड देखा जो समान कार्य करता है। यदि आप इस तरह के परिणामों में गंभीरता से रुचि रखते हैं, तो क्लेन के निर्धारित बिंदु प्रमेय के बारे में पढ़ें ।

प्रोग्राम-ए-ए-इमेज को कोड ओफ़्फ़िकेशन के रूप में भी देखा जा सकता है। ऐसा नहीं है कि यह विशेष रूप से व्यावहारिक थे ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.