C# Tip: Creating an Octal String from a Byte in C#

3. December 2008 18:19

Okay, so C# (.Net) has some awesome functionality for creating a hex string from a numeric value.  But what if you need an octal string for a binary value.  The real key is realizing that you need to move the value by 3 bits at a time for each octal number, and to XAND the value by 7 which is the highest value an octal number can hold.

public static string EncodeOctalString(byte value) 
{ 
    //convert to int, for cleaner syntax below. 
    int x = (int)value; 
 
    //return octal encoding \ddd of the character value. 
    return string.Format( 
        @"\{0}{1}{2}", 
        ((x >> 6) & 7), 
        ((x >> 3) & 7), 
        (x & 7) 
    ); 
}


Below is the reverse method, to convert from an octal value back into a byte.

public static byte DecodeOctalString(string octalValue) 
{ 
    int a = int.Parse(octalValue.Substring(1, 1)); 
    int b = int.Parse(octalValue.Substring(2, 1)); 
    int c = int.Parse(octalValue.Substring(3, 1)); 
 
    return (byte)((a<<6) | (b<<3) | (c)); 
} 


Hope it helps someone out there.  It's actually a problem I solved several years ago when working with inputting data into PostgreSQL.  The reverse method is what I needed today in order to be able to decode a javascript escaped string.  My next post will show what this is about.

Tags:

Comments

12/3/2008 11:41:11 PM #

trackback

Trackback from DotNetKicks.com

C# Tip: Creating an Octal String from a Byte in C#

DotNetKicks.com |

Comments are closed

Tracker1

Michael J. Ryan aka Tracker1

My name is Michael J. Ryan and I've been developing web based applications since the mid 90's.

I am an advanced Web UX developer with a near expert knowledge of JavaScript.