Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to convert byte array to string in C#?
In C#, converting a byte array to a string requires understanding character encoding. Every string has a character set and encoding that tells the computer how to interpret raw bytes into characters. The Encoding class provides various methods to decode byte arrays into strings.
The most common approach is using the Encoding.GetString() method, which decodes all bytes in a specified byte array into a string. Several encoding schemes are available such as UTF8, Unicode, UTF32, and ASCII.
Syntax
Following is the basic syntax for converting byte array to string −
string result = Encoding.EncodingType.GetString(byteArray);
Where EncodingType can be UTF8, ASCII, Unicode, UTF32, or Default.
Using Default Encoding
The Encoding.Default uses the system's default encoding scheme −
using System;
using System.Text;
class Program {
static void Main(string[] args) {
byte[] byteArray = Encoding.Default.GetBytes("Hello World");
Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
string str = Encoding.Default.GetString(byteArray);
Console.WriteLine($"String is: {str}");
}
}
The output of the above code is −
Byte Array is: 72 101 108 108 111 32 87 111 114 108 100 String is: Hello World
Using Different Encoding Types
Here are examples of converting byte arrays using different encoding schemes −
using System;
using System.Text;
class Program {
static void Main(string[] args) {
string original = "Hello C#";
// UTF8 encoding
byte[] utf8Bytes = Encoding.UTF8.GetBytes(original);
string utf8String = Encoding.UTF8.GetString(utf8Bytes);
Console.WriteLine($"UTF8: {utf8String}");
// ASCII encoding
byte[] asciiBytes = Encoding.ASCII.GetBytes(original);
string asciiString = Encoding.ASCII.GetString(asciiBytes);
Console.WriteLine($"ASCII: {asciiString}");
// Unicode encoding
byte[] unicodeBytes = Encoding.Unicode.GetBytes(original);
string unicodeString = Encoding.Unicode.GetString(unicodeBytes);
Console.WriteLine($"Unicode: {unicodeString}");
}
}
The output of the above code is −
UTF8: Hello C# ASCII: Hello C# Unicode: Hello C#
Encoding Mismatch Example
It is crucial to use the same encoding for both conversion directions. Using different encodings can result in corrupted or unreadable text −
using System;
using System.Text;
class Program {
static void Main(string[] args) {
byte[] byteArray = Encoding.ASCII.GetBytes("Hello World");
Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
// Wrong: Using UTF32 to decode ASCII bytes
string wrongStr = Encoding.UTF32.GetString(byteArray);
Console.WriteLine($"Wrong encoding result: '{wrongStr}'");
// Correct: Using ASCII to decode ASCII bytes
string correctStr = Encoding.ASCII.GetString(byteArray);
Console.WriteLine($"Correct encoding result: '{correctStr}'");
}
}
The output of the above code is −
Byte Array is: 72 101 108 108 111 32 87 111 114 108 100 Wrong encoding result: '???' Correct encoding result: 'Hello World'
Comparison of Encoding Methods
| Encoding Type | Description | Use Case |
|---|---|---|
| UTF8 | Variable-length encoding, 1-4 bytes per character | Web applications, international text |
| ASCII | Single-byte encoding for English characters | Simple English text, legacy systems |
| Unicode | UTF-16 encoding, 2 or 4 bytes per character | Windows applications, .NET default |
| UTF32 | Fixed 4-byte encoding | Applications requiring fixed-width characters |
Conclusion
Converting byte arrays to strings in C# requires matching the encoding used to create the byte array. Always use the same encoding type for both GetBytes() and GetString() operations to ensure data integrity and avoid corrupted text output.
