2011-01-28 6 views
30

प्रदर्शित करें मैं टेक्स्टबॉक्स में एक बाइट प्रदर्शित करना चाहता हूं। अब मैं उपयोग कर रहा हूँ:बाइटरी बाइनरी स्ट्रिंग सी # - सभी 8 अंकों

Convert.ToString(MyVeryOwnByte, 2); 

लेकिन जब बाइट है उन 0 के cuted किया जा रहा है शुरुआत में 0 के है। उदाहरण:

MyVeryOwnByte = 00001110 // Texbox shows -> 1110 
MyVeryOwnByte = 01010101 // Texbox shows -> 1010101 
MyVeryOwnByte = 00000000 // Texbox shows -> <Empty> 
MyVeryOwnByte = 00000001 // Texbox shows -> 1 

मैं सभी 8 अंक प्रदर्शित करना चाहता हूं।

+0

देखें: http://stackoverflow.com/questions/1644609/c-problem-with-byte और विशेष रूप से http://stackoverflow.com/questions/1644609/c-problem-with-byte/1644666#1644666 –

+0

इस में कोड के रूप में प्रश्न पहले से ही [किसी अन्य उपयोगकर्ता द्वारा गलत समझा गया है] (http://stackoverflow.com/questions/22894695/preceding-0s-in-integer-value), यह इंगित किया जाना चाहिए कि 'MyVeryOwnByte' वास्तव में' बाइट 'नहीं है यहां, और वह (यदि वह वास्तविक सी # कोड इस्तेमाल किया गया है) '01010101' जैसे अक्षर * दशमलव * संख्याएं हैं (जो केवल शून्य और किसी के होते हैं); उन संख्याओं को बनाने वाले बाइट्स के वास्तविक बिट्स काफी अलग दिखते हैं। –

+0

@ ओआर.मैपर यह केवल "छद्म कोड" है। – Hooch

उत्तर

62
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0'); 

इस स्ट्रिंग

1

पैड शून्य से स्ट्रिंग में 8 वर्णों के लिए कुल '0' के साथ छोड़ दिया करने के लिए खाली जगह को भरने जाएगा। इस मामले में यह PadLeft(length, characterToPadWith) है। बहुत उपयोगी विस्तार विधियां। PadRight() एक और उपयोगी विधि है।

+1

'PadRight' एक उपयोगी विधि है लेकिन इस परिदृश्य में नहीं। मैं अनुशंसा करता हूं कि आप इसे अपने उत्तर से हटा दें (या हर अन्य उपयोगी .NET विधि जोड़ें - मुझे पता है कि मैं कौन सी चुनूँगा: डी)। –

+1

इसके अलावा, वे एक्सटेंशन विधियां नहीं हैं। – Gabe

10

आप यह कैसे करते हैं इस पर निर्भर करता है कि आप अपने आउटपुट को कैसे देखना चाहते हैं।

आप बस "00,011,011", इस तरह एक समारोह का उपयोग करना चाहते हैं:

static string Pad(byte b) 
{ 
    return Convert.ToString(b, 2).PadLeft(8, '0'); 
} 

आप की तरह "000 " आउटपुट चाहते हैं, इस तरह एक समारोह का उपयोग करें:

static string PadBold(byte b) 
{ 
    string bin = Convert.ToString(b, 2); 
    return new string('0', 8 - bin.Length) + "<b>" + bin + "</b>"; 
} 

यदि आप "0001 1011" जैसे आउटपुट चाहते हैं, तो इस तरह का एक कार्य बेहतर हो सकता है:

static string PadNibble(byte b) 
{ 
    return Int32.Parse(Convert.ToString(b, 2)).ToString("0000 0000"); 
} 
+0

@ जेफ: मैंने इस संस्करण को पोस्ट किया क्योंकि कभी-कभी 'नई स्ट्रिंग()' तकनीक उपयोगी होती है। आपने ग्रेगरी के 'पैडराइट' के उल्लेख पर सवाल नहीं उठाया, और यह कार्य समस्या को हल भी नहीं करता है। – Gabe

+0

मैंने किसी और की प्रतिक्रिया पर प्रतिक्रिया कैसे पूरी तरह से अप्रासंगिक है। मैंने सोचा कि यह आपको एक बेहतर समाधान का जिक्र करके अपने जवाब को कम करने के लिए अजीब लगा है जिसे आपने नहीं दिया था और यह सुझाव कि आपके पास जो सुझाव था, उसे पढ़ने में विशेष रूप से आसान नहीं था। चूंकि एसओ एक अच्छा जवाब पाने के लिए एक संसाधन है, तो आप पैडलेफ्ट समाधान और पूरी तरह से अपने विकल्प सहित बेहतर होंगे - तो आप शायद बेहतर जवाब भी दे सकते हैं। यह पहले के बारे में नहीं है, यह सबसे अच्छा है। –

+0

@ जेफ: मैं प्रत्येक उत्तर के लिए एक अलग पोस्ट पसंद करता हूं ताकि कोई डुप्लिकेट से गुजरने के बिना आसानी से उत्तर ब्राउज़ कर सके। हालांकि, मैंने आज अपवाद बनाया है, और सिर्फ आपके लिए एक ही पोस्ट में 3 उत्तरों डाल दिए हैं। – Gabe

संबंधित मुद्दे