OSDN Git Service

シフト,インクリメント,デクリメント,クリア,反転機能実装
authorkimikage <kimikage_ceo@hotmail.com>
Tue, 4 Jan 2011 14:32:10 +0000 (23:32 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Tue, 4 Jan 2011 14:32:10 +0000 (23:32 +0900)
Fugashi/MainForm.Designer.cs
Fugashi/MainForm.cs

index 0a5469b..1fc14a0 100755 (executable)
@@ -48,6 +48,12 @@ namespace Fugashi
             this.radio1B = new System.Windows.Forms.RadioButton();\r
             this.textValue = new System.Windows.Forms.TextBox();\r
             this.textHex = new System.Windows.Forms.TextBox();\r
+            this.buttonLsh = new System.Windows.Forms.Button();\r
+            this.buttonRsh = new System.Windows.Forms.Button();\r
+            this.buttonInc = new System.Windows.Forms.Button();\r
+            this.buttonDec = new System.Windows.Forms.Button();\r
+            this.buttonClr = new System.Windows.Forms.Button();\r
+            this.buttonNot = new System.Windows.Forms.Button();\r
             this.bits0 = new Fugashi.BitSwitches4();\r
             this.bits4 = new Fugashi.BitSwitches4();\r
             this.bits8 = new Fugashi.BitSwitches4();\r
@@ -219,6 +225,72 @@ namespace Fugashi
             this.textHex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
             this.textHex.TextChanged += new System.EventHandler(this.textHex_TextChanged);\r
             // \r
+            // buttonLsh\r
+            // \r
+            this.buttonLsh.Location = new System.Drawing.Point(28, 103);\r
+            this.buttonLsh.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonLsh.Name = "buttonLsh";\r
+            this.buttonLsh.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonLsh.TabIndex = 107;\r
+            this.buttonLsh.Text = "&Lsh";\r
+            this.buttonLsh.UseVisualStyleBackColor = true;\r
+            this.buttonLsh.Click += new System.EventHandler(this.buttonLsh_Click);\r
+            // \r
+            // buttonRsh\r
+            // \r
+            this.buttonRsh.Location = new System.Drawing.Point(76, 103);\r
+            this.buttonRsh.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonRsh.Name = "buttonRsh";\r
+            this.buttonRsh.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonRsh.TabIndex = 108;\r
+            this.buttonRsh.Text = "&Rsh";\r
+            this.buttonRsh.UseVisualStyleBackColor = true;\r
+            this.buttonRsh.Click += new System.EventHandler(this.buttonRsh_Click);\r
+            // \r
+            // buttonInc\r
+            // \r
+            this.buttonInc.Location = new System.Drawing.Point(124, 103);\r
+            this.buttonInc.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonInc.Name = "buttonInc";\r
+            this.buttonInc.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonInc.TabIndex = 109;\r
+            this.buttonInc.Text = "&Inc";\r
+            this.buttonInc.UseVisualStyleBackColor = true;\r
+            this.buttonInc.Click += new System.EventHandler(this.buttonInc_Click);\r
+            // \r
+            // buttonDec\r
+            // \r
+            this.buttonDec.Location = new System.Drawing.Point(172, 103);\r
+            this.buttonDec.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonDec.Name = "buttonDec";\r
+            this.buttonDec.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonDec.TabIndex = 110;\r
+            this.buttonDec.Text = "&Dec";\r
+            this.buttonDec.UseVisualStyleBackColor = true;\r
+            this.buttonDec.Click += new System.EventHandler(this.buttonDec_Click);\r
+            // \r
+            // buttonClr\r
+            // \r
+            this.buttonClr.Location = new System.Drawing.Point(220, 103);\r
+            this.buttonClr.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonClr.Name = "buttonClr";\r
+            this.buttonClr.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonClr.TabIndex = 111;\r
+            this.buttonClr.Text = "&Clr";\r
+            this.buttonClr.UseVisualStyleBackColor = true;\r
+            this.buttonClr.Click += new System.EventHandler(this.buttonClr_Click);\r
+            // \r
+            // buttonNot\r
+            // \r
+            this.buttonNot.Location = new System.Drawing.Point(268, 103);\r
+            this.buttonNot.Margin = new System.Windows.Forms.Padding(2);\r
+            this.buttonNot.Name = "buttonNot";\r
+            this.buttonNot.Size = new System.Drawing.Size(44, 28);\r
+            this.buttonNot.TabIndex = 112;\r
+            this.buttonNot.Text = "&Not";\r
+            this.buttonNot.UseVisualStyleBackColor = true;\r
+            this.buttonNot.Click += new System.EventHandler(this.buttonNot_Click);\r
+            // \r
             // bits0\r
             // \r
             this.bits0.Location = new System.Drawing.Point(459, 168);\r
@@ -352,6 +424,12 @@ namespace Fugashi
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.BackColor = System.Drawing.SystemColors.Window;\r
             this.ClientSize = new System.Drawing.Size(550, 284);\r
+            this.Controls.Add(this.buttonNot);\r
+            this.Controls.Add(this.buttonClr);\r
+            this.Controls.Add(this.buttonDec);\r
+            this.Controls.Add(this.buttonInc);\r
+            this.Controls.Add(this.buttonRsh);\r
+            this.Controls.Add(this.buttonLsh);\r
             this.Controls.Add(this.bits0);\r
             this.Controls.Add(this.bits4);\r
             this.Controls.Add(this.bits8);\r
@@ -418,6 +496,12 @@ namespace Fugashi
         private BitSwitches4 bits52;\r
         private BitSwitches4 bits56;\r
         private BitSwitches4 bits60;\r
+        private System.Windows.Forms.Button buttonLsh;\r
+        private System.Windows.Forms.Button buttonRsh;\r
+        private System.Windows.Forms.Button buttonInc;\r
+        private System.Windows.Forms.Button buttonDec;\r
+        private System.Windows.Forms.Button buttonClr;\r
+        private System.Windows.Forms.Button buttonNot;\r
     }\r
 }\r
 \r
index 2a7cd63..d108645 100755 (executable)
@@ -44,14 +44,13 @@ namespace Fugashi
             Font mono = new Font(FontFamily.GenericMonospace, textHex.Font.Size);\r
             textHex.Font = mono;\r
             textValue.Font = mono;\r
-            BitChanged(null, null);\r
         }\r
 \r
         private void radioUint_CheckedChanged(object sender, EventArgs e)\r
         {\r
             if (radioUint.Checked)\r
             {\r
-                UpdateUint(GetBytes());\r
+                UpdateValue(GetBytes());\r
             }\r
         }\r
 \r
@@ -59,7 +58,7 @@ namespace Fugashi
         {\r
             if (radioInt.Checked)\r
             {\r
-                UpdateInt(GetBytes());\r
+                UpdateValue(GetBytes());\r
             }\r
         }\r
 \r
@@ -74,7 +73,7 @@ namespace Fugashi
                     radio4B.Checked = true;\r
                 }\r
                 SetForFloatingPoint(radio8B.Checked);\r
-                UpdateFloat(GetBytes());\r
+                UpdateValue(GetBytes());\r
             }\r
             else\r
             {\r
@@ -88,6 +87,7 @@ namespace Fugashi
         {\r
             radioUint.Checked = true;\r
             radio4B.Checked = true;\r
+            BitChanged(null, null);\r
         }\r
 \r
         private void SetForFloatingPoint(bool isDouble)\r
@@ -114,9 +114,9 @@ namespace Fugashi
 \r
         private byte[] GetBytes()\r
         {\r
-            byte[] b = new Byte[length];\r
+            byte[] b = new Byte[8];\r
             int i = 0;\r
-            for (int j = 0; j < length; ++j)\r
+            for (int j = 0; j < 8; ++j)\r
             {\r
                 b[j] = 0;\r
                 i += 8;\r
@@ -129,6 +129,38 @@ namespace Fugashi
             return b;\r
         }\r
 \r
+        private long ToInt64(byte[] bytes)\r
+        {\r
+            switch (length)\r
+            {\r
+                case 1:\r
+                    return (sbyte)bytes[0];\r
+                case 2:\r
+                    return BitConverter.ToInt16(bytes, 0);\r
+                case 4:\r
+                    return BitConverter.ToInt32(bytes, 0);\r
+                case 8:\r
+                    return BitConverter.ToInt64(bytes, 0);\r
+            }\r
+            return 0;\r
+        }\r
+\r
+        private ulong ToUInt64(byte[] bytes)\r
+        {\r
+            switch (length)\r
+            {\r
+                case 1:\r
+                    return bytes[0];\r
+                case 2:\r
+                    return BitConverter.ToUInt16(bytes, 0);\r
+                case 4:\r
+                    return BitConverter.ToUInt32(bytes, 0);\r
+                case 8:\r
+                    return BitConverter.ToUInt64(bytes, 0);\r
+            }\r
+            return 0;\r
+        }\r
+\r
         private void radio8B_CheckedChanged(object sender, EventArgs e)\r
         {\r
             if (radio8B.Checked)\r
@@ -195,71 +227,24 @@ namespace Fugashi
         {\r
             if (radioUint.Checked)\r
             {\r
-                UpdateUint(bytes);\r
+                textValue.Text = ToUInt64(bytes).ToString();\r
             }\r
             else if (radioInt.Checked)\r
             {\r
-                UpdateInt(bytes);\r
+                textValue.Text = ToInt64(bytes).ToString();\r
             }\r
             else if (radioFloat.Checked)\r
             {\r
-                UpdateFloat(bytes);\r
-            }\r
-        }\r
-\r
-        private void UpdateUint(byte[] bytes)\r
-        {\r
-            ulong value = 0;\r
-            switch (length)\r
-            {\r
-                case 1:\r
-                    value = bytes[0]; \r
-                    break;\r
-                case 2:\r
-                    value = BitConverter.ToUInt16(bytes, 0);\r
-                    break;\r
-                case 4:\r
-                    value = BitConverter.ToUInt32(bytes, 0);\r
-                    break;\r
-                case 8:\r
-                    value = BitConverter.ToUInt64(bytes, 0);\r
-                    break;\r
-            }\r
-            textValue.Text = value.ToString();\r
-        }\r
-\r
-        private void UpdateInt(byte[] bytes)\r
-        {\r
-            long value = 0;\r
-            switch (length)\r
-            {\r
-                case 1:\r
-                    value = (sbyte)bytes[0];\r
-                    break;\r
-                case 2:\r
-                    value = BitConverter.ToInt16(bytes, 0);\r
-                    break;\r
-                case 4:\r
-                    value = BitConverter.ToInt32(bytes, 0);\r
-                    break;\r
-                case 8:\r
-                    value = BitConverter.ToInt64(bytes, 0);\r
-                    break;\r
-            }\r
-            textValue.Text = value.ToString();\r
-        }\r
-\r
-        private void UpdateFloat(byte[] bytes)\r
-        {\r
-            if (length == 4)\r
-            {\r
-                float value = BitConverter.ToSingle(bytes, 0);\r
-                textValue.Text = value.ToString("g8");\r
-            }\r
-            else\r
-            {\r
-                double value = BitConverter.ToDouble(bytes, 0);\r
-                textValue.Text = value.ToString("g17");\r
+                if (length == 4)\r
+                {\r
+                    float value = BitConverter.ToSingle(bytes, 0);\r
+                    textValue.Text = value.ToString("g8");\r
+                }\r
+                else\r
+                {\r
+                    double value = BitConverter.ToDouble(bytes, 0);\r
+                    textValue.Text = value.ToString("g17");\r
+                }\r
             }\r
         }\r
 \r
@@ -268,7 +253,7 @@ namespace Fugashi
             textHex.Text = "";\r
             for (int i = length - 1; i >= 0; --i)\r
             {\r
-                 textHex.Text += bytes[i].ToString("X2");\r
+                textHex.Text += bytes[i].ToString("X2");\r
             }\r
         }\r
 \r
@@ -286,6 +271,13 @@ namespace Fugashi
             }\r
         }\r
 \r
+        private void UpdateAll(byte[] bytes)\r
+        {\r
+            UpdateBits(bytes);\r
+            UpdateValue(bytes);\r
+            UpdateHex(bytes);\r
+        }\r
+\r
         private void textHex_TextChanged(object sender, EventArgs e)\r
         {\r
             if (!textHex.Focused)\r
@@ -303,7 +295,7 @@ namespace Fugashi
         private void textValue_TextChanged(object sender, EventArgs e)\r
         {\r
             string text = textValue.Text;\r
-            if (!textValue.Focused && e == EventArgs.Empty)\r
+            if (!textValue.Focused && sender != null)\r
             {\r
                 return;\r
             }\r
@@ -340,5 +332,62 @@ namespace Fugashi
             UpdateHex(b);\r
         }\r
 \r
+        private void buttonInc_Click(object sender, EventArgs e)\r
+        {\r
+            if (radioFloat.Checked)\r
+            {\r
+\r
+            }\r
+            else\r
+            {\r
+                ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+                UpdateAll(BitConverter.GetBytes(++value));\r
+            }\r
+        }\r
+        private void buttonDec_Click(object sender, EventArgs e)\r
+        {\r
+            if (radioFloat.Checked)\r
+            {\r
+\r
+            }\r
+            else\r
+            {\r
+                ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+                UpdateAll(BitConverter.GetBytes(--value));\r
+            }\r
+        }\r
+\r
+        private void buttonClr_Click(object sender, EventArgs e)\r
+        {\r
+            UpdateAll(BitConverter.GetBytes((ulong)0));\r
+        }\r
+\r
+        private void buttonNot_Click(object sender, EventArgs e)\r
+        {\r
+            ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+            UpdateAll(BitConverter.GetBytes(~value));\r
+        }\r
+\r
+        private void buttonLsh_Click(object sender, EventArgs e)\r
+        {\r
+            ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+            UpdateAll(BitConverter.GetBytes(value << 1));\r
+        }\r
+\r
+        private void buttonRsh_Click(object sender, EventArgs e)\r
+        {\r
+            if (radioInt.Checked)\r
+            {\r
+                long value = ToInt64(GetBytes());\r
+                UpdateAll(BitConverter.GetBytes(value >> 1));\r
+            }\r
+            else\r
+            {\r
+                ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+                UpdateAll(BitConverter.GetBytes(value >> 1));\r
+            }\r
+        }\r
+\r
+\r
     }\r
 }\r