2.12. Decoding a Base64-Encoded Binary

Problem

You have a string that contains information such as a bitmap encoded as base64. You need to decode this data (which may have been embedded in an email message) from a string into a byte[] so that you can access the original binary.

Solution

Using the static method Convert.FromBase64CharArray on the Convert class, an encoded char[] and/or string may be decoded to its equivalent byte[]:

using System;

public static byte[] Base64DecodeString(string inputStr) 
{
    byte[] decodedByteArray = 
      Convert.FromBase64CharArray(inputStr.ToCharArray( ), 
                                    0, inputStr.Length);
    return (decodedByteArray);
}

Discussion

The static FromBase64CharArray method on the Convert class makes decoding an encoded base64 string a simple matter. This method returns a byte[] that contains the decoded elements of the string.

If you receive a file via email, such as an image file (.bmp), that has previously been converted to a string, to convert it back into its original bitmap file, you could do something like the following:

byte[] imageBytes = Base64DecodeString(bmpAsString);
fstrm = new FileStream(@"C:\winnt_copy.bmp", FileMode.CreateNew, FileAccess.Write);
BinaryWriter writer = new BinaryWriter(fstrm);
writer.Write(imageBytes);
writer.Close( );
fstrm.Close( );

In this code, the bmpAsString variable was obtained from the code in the Discussion section of Recipe 2.11. The imageBytes byte[] is the bmpAsString string converted back to a byte[], which can then be written back ...

Get C# Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.