Convert String to/from Byte Array C# Examples
This tutorial covers working with strings and byte arrays in C#.
- How to parse a string to a byte array.
- How to convert a byte array to a string in C#.
String
is an inbuilt type that stores a sequence of characters. Byte Array
is an array of bytes used to store binary data. There is no direct way to convert one type to another; manual conversion is required.
Convert String to Byte Array in C# with examples
There are multiple ways to convert a string to a byte array.
Using Encoding.ASCII.GetBytes()
This approach works if the string contains ASCII characters. The default encoding is ASCII, not UTF-16.
ASCII
uses 7 bits to represent characters and allows limited character sets, WhereasUTF-16
uses 16 bits to represent characters and accommodate large character sets.if the string contains non-ASCII characters, it is replaced with
?
while converting to a byte array.First, use the
System.Text
namespace in your codebyte[] bytes = Encoding.ASCII.GetBytes("Hello");
Here is an example
using System; using System.Text; public class Program { public static void Main() { byte[] bytes = Encoding.ASCII.GetBytes("Hello"); string str = Encoding.ASCII.GetString(bytes); Console.WriteLine(str); } }
Another example is if the string contains UTF-16 characters
using System; using System.Text; public class Program { public static void Main() { byte[] bytes = Encoding.ASCII.GetBytes("Hello�"); string str = Encoding.ASCII.GetString(bytes); //sHello? Console.WriteLine(str); } }
The above example contains a string of
�
, which is a UTF-16 character, Output contains a character?
Use Encoding.UTF8.GetBytes() It is easy to convert a string to a byte array using
UTF-8
encoding. UTF-8 is an 8-bit encoding used widely for encoding textFirst, Install the
System.Memory
package usingNuget
. It providesReadOnlySpan
to read the memory bytes.using System; using System.Text; public class Program { public static void Main() { // Convert string to byte array ReadOnlySpan<byte> bytes1 = System.Text.Encoding.UTF8.GetBytes("hello1"); // Convert byte array to string string str = Encoding.ASCII.GetString(bytes1);//hello1 Console.WriteLine(str); } }
Using u8 String Literal Syntax (C# 11):
The C# 11 version, uses
UTF-8
string literals syntax.Append
u8
to a string converted into a byte array.using System; using System.Text; public class Program { public static void Main() { // Convert string to byte array ReadOnlySpan<byte> bytes2 = "hello3"u8; // Convert byte array to string string str = Encoding.ASCII.GetString(bytes2); //hello3 Console.WriteLine(str); } }
Assign the string variable to a byte array
The fourth way, assign the string variable to a byte array, It casts and converts to the array.
string str = "welcome"; byte[] array = str;
Use Encoding.Unicode.GetBytes
This method is used to encode a text with UTF-16 encoding,
UTF-16
is a 16-bit encoding to represent each character in a large character set.string str = "welcome"; byte[] array = Encoding.Unicode.GetBytes(str);
Use Encoding.UTF32.GetBytes
This method is used to encode a text with
UTF-32
encoding,UTF-32
is a 32-bit encoding to represent each character, supports a wide range of charactersstring str = "welcome"; byte[] array = Encoding.UTF32.GetBytes(str);
Byte Array to String in C# with examples
Multiple ways to convert byte array to String
Using Encoding.ASCII.GetString
string str = Encoding.ASCII.GetString(bytes); // hello
It supports
ASCII
, but not UTF-8 or UTF-16 encoding.The second way, use
System.Text.Encoding.UTF8.GetString
Takes byte array and return string
using System; using System.Text; public class Program { public static void Main() { byte[] bytes = Encoding.ASCII.GetBytes("Hello"); ReadOnlySpan<byte> bytes1 = System.Text.Encoding.UTF8.GetBytes("hello1"); string str = System.Text.Encoding.UTF8.GetString(bytes1); Console.WriteLine(str); // hello1 } }