Results 1 to 6 of 6

Thread: C#-Base64 Encoding and Decoding

Hybrid View

  1. #1

    Thread Starter
    Hyperactive Member Sgt-Peppa's Avatar
    Join Date
    Mar 2003
    Location
    Munich - Germany
    Posts
    476

    C#-Base64 Encoding and Decoding

    To encode a string

    Code:
    public string base64Encode(string data)
    {
        try
        {
            byte[] encData_byte = new byte[data.Length];
            encData_byte = System.Text.Encoding.UTF8.GetBytes(data);    
            string encodedData = Convert.ToBase64String(encData_byte);
            return encodedData;
        }
        catch(Exception e)
        {
            throw new Exception("Error in base64Encode" + e.Message);
        }
    }
    and to decode

    Code:
    public string base64Decode(string data)
    {
        try
        {
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();  
            System.Text.Decoder utf8Decode = encoder.GetDecoder();
        
            byte[] todecode_byte = Convert.FromBase64String(data);
            int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);    
            char[] decoded_char = new char[charCount];
            utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);                   
            string result = new String(decoded_char);
            return result;
        }
        catch(Exception e)
        {
            throw new Exception("Error in base64Decode" + e.Message);
        }
    }
    Hope that saves some time,

    Stephan
    Keep Smiling - even if its hard
    Frankie Says Relax, wossname Says Yeah!
    wossname:--Currently I'm wearing a gimp suit and a parachute.
    C# - Base64 Blog

  2. #2
    New Member
    Join Date
    Aug 2005
    Posts
    2

    Re: C#-Base64 Encoding and Decoding

    No offense, but there's certainly a more elegant solution. I'm not sure why you're catching a specific exception just to throw a more general one either.

    Code:
    public string Encode(string str)
    {
       byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(str);
       return Convert.ToBase64String(encbuff);
    }
    public string Decode(string str)
    {
       byte[] decbuff = Convert.FromBase64String(str);
       return System.Text.Encoding.UTF8.GetString(decbuff);
    }

  3. #3
    New Member
    Join Date
    Aug 2005
    Posts
    2

    Re: C#-Base64 Encoding and Decoding

    Pardon me. I now understand why you were throwing the exception. When an exception occurs within a function, it does not pass it out to the containing function that made the call. You have to throw it back yourself. Nicely done.

  4. #4
    Frenzied Member axion_sa's Avatar
    Join Date
    Jan 2002
    Location
    Joburg, RSA
    Posts
    1,724

    Re: C#-Base64 Encoding and Decoding

    The following is a better way of bubbling exceptions. It's not entirely necessary in this situation though

    Code:
    try
    {
        // Code here
    }
    catch (Exception ex)
    {
        throw new Exception("Error in base64Decode: " + e.Message, ex);
    }
    This way, the caller will have access to the original exception information (stack trace et al).

  5. #5
    New Member
    Join Date
    Mar 2007
    Posts
    1

    Thumbs up Re: C#-Base64 Encoding and Decoding

    Quote Originally Posted by Sgt-Peppa
    To encode a string

    Code:
    public string base64Encode(string data)
    {
        try
        {
            byte[] encData_byte = new byte[data.Length];
            encData_byte = System.Text.Encoding.UTF8.GetBytes(data);    
            string encodedData = Convert.ToBase64String(encData_byte);
            return encodedData;
        }
        catch(Exception e)
        {
            throw new Exception("Error in base64Encode" + e.Message);
        }
    }
    and to decode

    Code:
    public string base64Decode(string data)
    {
        try
        {
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();  
            System.Text.Decoder utf8Decode = encoder.GetDecoder();
        
            byte[] todecode_byte = Convert.FromBase64String(data);
            int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);    
            char[] decoded_char = new char[charCount];
            utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);                   
            string result = new String(decoded_char);
            return result;
        }
        catch(Exception e)
        {
            throw new Exception("Error in base64Decode" + e.Message);
        }
    }
    Hope that saves some time,

    Stephan
    Indeed it does Stephan! Short, sweet and right to the meat of it. Thanks for sharing it, m8y!

  6. #6
    New Member
    Join Date
    Aug 2007
    Posts
    1

    Re: C#-Base64 Encoding and Decoding

    Quote Originally Posted by SugarDaddy420
    Pardon me. I now understand why you were throwing the exception. When an exception occurs within a function, it does not pass it out to the containing function that made the call. You have to throw it back yourself. Nicely done.
    Yes it does. What do you mean it does not pass it out to the containing function??

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width