From cbbf94df3ff0c20cfa321ff13f0be5857ab41bb8 Mon Sep 17 00:00:00 2001 From: Scalpel_cp <165da7fc5536ee16440a98f161bfa866a8b94595G55xazV5> Date: Sat, 5 Apr 2008 12:52:39 +0000 Subject: [PATCH] Initial work to add numbersystems as Extension Methods --- .../Extension/NumberSystem/Binary.cs | 10 +++ .../FrodeTest/Extension/NumberSystem/Hex.cs | 78 +++++++++++++++++++ source/FrodeTest/FrodeTest.csproj | 3 + source/FrodeTest/Program.cs | 2 +- source/FrodeTest/Test/NumberSystemTest.cs | 24 ++++++ 5 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 source/FrodeTest/Extension/NumberSystem/Binary.cs create mode 100644 source/FrodeTest/Extension/NumberSystem/Hex.cs create mode 100644 source/FrodeTest/Test/NumberSystemTest.cs diff --git a/source/FrodeTest/Extension/NumberSystem/Binary.cs b/source/FrodeTest/Extension/NumberSystem/Binary.cs new file mode 100644 index 000000000..e49617a38 --- /dev/null +++ b/source/FrodeTest/Extension/NumberSystem/Binary.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace FrodeTest.Extension.NumberSystem +{ + class Binary + { + } +} diff --git a/source/FrodeTest/Extension/NumberSystem/Hex.cs b/source/FrodeTest/Extension/NumberSystem/Hex.cs new file mode 100644 index 000000000..240b268cd --- /dev/null +++ b/source/FrodeTest/Extension/NumberSystem/Hex.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace FrodeTest.Extension.NumberSystem +{ + public static class Hex + { + + #region C# 3.0 Extension Methods + public static string AsHex(this int n) + { + return ConvertToHex((UInt32)n); + } + + #endregion + + #region Converters + + private static string ConvertToHex(UInt32 num) + { + string xHex = string.Empty; + + while (num >= 16) + { + xHex = (SingleDigitToHex((byte)(num & 0xf))) + xHex; + num = num / 16; + } + + xHex = SingleDigitToHex((byte)(num & 0xf)) + xHex; + + return xHex; + } + + private static char SingleDigitToHex(byte d) + { + switch (d) + { + case 0: + return '0'; + case 1: + return '1'; + case 2: + return '2'; + case 3: + return '3'; + case 4: + return '4'; + case 5: + return '5'; + case 6: + return '6'; + case 7: + return '7'; + case 8: + return '8'; + case 9: + return '9'; + case 10: + return 'A'; + case 11: + return 'B'; + case 12: + return 'C'; + case 13: + return 'D'; + case 14: + return 'E'; + case 15: + return 'F'; + } + return ' '; + + } + + #endregion + } +} diff --git a/source/FrodeTest/FrodeTest.csproj b/source/FrodeTest/FrodeTest.csproj index 76e045736..0752e6fc7 100644 --- a/source/FrodeTest/FrodeTest.csproj +++ b/source/FrodeTest/FrodeTest.csproj @@ -49,6 +49,8 @@ + + @@ -59,6 +61,7 @@ + diff --git a/source/FrodeTest/Program.cs b/source/FrodeTest/Program.cs index 112714de2..8302bf6c3 100644 --- a/source/FrodeTest/Program.cs +++ b/source/FrodeTest/Program.cs @@ -25,7 +25,6 @@ namespace FrodeTest Security.User currentUser = Security.User.Authenticate("frode", "secret"); Shell.Session currentSession = Shell.Session.CreateSession(currentUser); currentSession.Run(); - //Test //Debug.SortedListSearcher.RunTest(); @@ -38,6 +37,7 @@ namespace FrodeTest //Test.BoolTest.RunTest(); //Test.InterfaceTest.RunTest(); Test.ExtensionMethodsTest.RunTest(); + Test.NumberSystemTest.RunTest(); //Done Console.WriteLine("Shutting down computer"); diff --git a/source/FrodeTest/Test/NumberSystemTest.cs b/source/FrodeTest/Test/NumberSystemTest.cs new file mode 100644 index 000000000..f264bd0ca --- /dev/null +++ b/source/FrodeTest/Test/NumberSystemTest.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using FrodeTest.Extension.NumberSystem; + +namespace FrodeTest.Test +{ + class NumberSystemTest + { + public static void RunTest() + { + Console.WriteLine("Testing Numbersystems"); + + Console.WriteLine("0 as HEX: " + 0.AsHex()); + Console.WriteLine("10 as HEX: " + 10.AsHex()); + Console.WriteLine("15 as HEX: " + 15.AsHex()); + Console.WriteLine("16 as HEX: " + 16.AsHex()); + Console.WriteLine("17 as HEX: " + 17.AsHex()); + Console.WriteLine("1023 as HEX: " + 1023.AsHex()); + Console.WriteLine("99999 as HEX: " + 99999.AsHex()); + } + } +}