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.
ASCIIuses 7 bits to represent characters and allows limited character sets, WhereasUTF-16uses 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.Textnamespace 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-8encoding. UTF-8 is an 8-bit encoding used widely for encoding textFirst, Install the
System.Memorypackage usingNuget. It providesReadOnlySpanto 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-8string literals syntax.Append
u8to 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-16is 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-32encoding,UTF-32is 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); // helloIt supports
ASCII, but not UTF-8 or UTF-16 encoding.The second way, use
System.Text.Encoding.UTF8.GetStringTakes 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 } }
