C#: बाइट सरणी को स्ट्रिंग में परिवर्तित करना और कंसोल को प्रिंट करना




(4)

public void parse_table(BinaryReader inFile)
{
    byte[] idstring = inFile.ReadBytes(6);
    Console.WriteLine(Convert.ToString(idstring));
}

यह एक सरल स्निपेट है: फ़ाइल के पहले 6 बाइट्स पढ़ें और इसे स्ट्रिंग में बदलें।

हालाँकि कंसोल System.Byte[] दर्शाता है।

शायद मैं रूपांतरण के लिए गलत वर्ग का उपयोग कर रहा हूं। मुझे क्या उपयोग करना चाहिए? यह अंततः UTF-8 में फिल्माए गए फ़ाइलनामों को पार्स कर रहा होगा, और मैं सभी फ़ाइलनामों को पढ़ने के लिए उसी विधि का उपयोग करने की योजना बना रहा हूं।


मैं एक भविष्यवाणी में था, जहाँ मुझे टेस्ट क्लास में इनपुट के रूप में एक हस्ताक्षरित बाइट सरणी ( sbyte[] था और मैं इसे सादगी के लिए एक सामान्य बाइट सरणी ( byte[] ) से बदलना चाहता था। मैं एक Google खोज से यहां पहुंचा, लेकिन टॉम का जवाब मेरे लिए उपयोगी नहीं था।

मैंने दिए गए byte[] के इनिशियलाइज़र को प्रिंट करने के लिए एक सहायक विधि लिखी byte[] :

public void PrintByteArray(byte[] bytes)
{
    var sb = new StringBuilder("new byte[] { ");
    foreach (var b in bytes)
    {
        sb.Append(b + ", ");
    }
    sb.Append("}");
    Console.WriteLine(sb.ToString());
}

आप इसे इस तरह से उपयोग कर सकते हैं:

var signedBytes = new sbyte[] { 1, 2, 3, -1, -2, -3, 127, -128, 0, };
var unsignedBytes = UnsignedBytesFromSignedBytes(signedBytes);
PrintByteArray(unsignedBytes);
// output:
// new byte[] { 1, 2, 3, 255, 254, 253, 127, 128, 0, }

Ouput मान्य C # है जिसे तब आपके कोड में कॉपी किया जा सकता है।

और सिर्फ पूर्णता के लिए, यहां UnsignedBytesFromSignedBytes विधि है:

// http://.com/a/829994/346561
public static byte[] UnsignedBytesFromSignedBytes(sbyte[] signed)
{
    var unsigned = new byte[signed.Length];
    Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length);
    return unsigned;
}

मैंने अपने कोडबेस में इस सरल कोड का उपयोग किया है:

static public string ToReadableByteArray(byte[] bytes)
{
    return string.Join(", ", bytes);
}

काम में लाना:

Console.WriteLine(ToReadableByteArray(bytes));

यह वास्तव में है:

    Console.WriteLine(Encoding.Default.GetString(value));

या UTF-8 के लिए विशेष रूप से:

    Console.WriteLine(Encoding.UTF8.GetString(value));

Linq और स्ट्रिंग प्रक्षेप के साथ कुछ मज़ेदार के लिए:

public string ByteArrayToString(byte[] bytes)
{
    if ( bytes == null ) return "null";
    string joinedBytes = string.Join(", ", bytes.Select(b => b.ToString()));
    return $"new byte[] {{ {joinedBytes} }}";
}

परीक्षण के मामलों:

byte[] bytes = { 1, 2, 3, 4 };
ByteArrayToString( bytes ) .Dump();
ByteArrayToString(null).Dump();
ByteArrayToString(new byte[] {} ) .Dump();

आउटपुट:

new byte[] { 1, 2, 3, 4 }
null
new byte[] {  }



c#  


c#