Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我会得到一个“a”;输入字符串的格式不正确";错误?_C#_.net_String - Fatal编程技术网

C# 为什么我会得到一个“a”;输入字符串的格式不正确";错误?

C# 为什么我会得到一个“a”;输入字符串的格式不正确";错误?,c#,.net,string,C#,.net,String,我已经尽我所能地搜索了,我能找到的唯一的东西就是与我的情况无关的例子。所以我来到这里。我正在制作一个保存编辑器,并试图使组合框选项写入保存文件。好吧,它似乎一直到编写它的时候,但是它把输入字符串错误推到了我身上。这是相关代码。哦,组合框选项的第一到第二个字符是必需的十六进制值 编辑:我追溯到字符串实际上是字符串的时候 string filename = textBox1.Text; //if comboBox1.SelectedIndex str

我已经尽我所能地搜索了,我能找到的唯一的东西就是与我的情况无关的例子。所以我来到这里。我正在制作一个保存编辑器,并试图使组合框选项写入保存文件。好吧,它似乎一直到编写它的时候,但是它把输入字符串错误推到了我身上。这是相关代码。哦,组合框选项的第一到第二个字符是必需的十六进制值

编辑:我追溯到字符串实际上是字符串的时候

        string filename = textBox1.Text;

        //if comboBox1.SelectedIndex
        string comboxVal = comboBox1.Text;
        char[] chimney = new char[4];
        chimney[0] = '0';
        chimney[1] = 'x';
        comboxVal.CopyTo(0, chimney, 2, 2);


        string s = new string(chimney);
        label7.Text = s;
        FileStream fw = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite);
        fw.Position = 0x684;
        fw.WriteByte(Convert.ToByte(s));
        fw.Close();

让我们看看这里发生了什么

您有
char[]write
。一组字符


调用
string compWrite=Convert.ToString(write)。编译器选择接受对象作为输入的
Convert.ToString(object value)
重载(您可以通过在
ToString
顶部移动鼠标光标来检查)

因此调用了
Convert.ToString(object)
,结果是
System.Char[]
,它存储在
compWrite


现在我们有了
Convert.ToByte(compWrite)
,它试图将数字的字符串表示形式转换为byte类型的整数变量。如果怀疑输入字符串格式不正确,则会出现错误?

哪行抛出?C#中的Char和String是两个字节的对象,具有私有属性,指示字符是一个字节还是两个字节。您需要使用Ascii、UTF7、UTF8、Unicode等编码类型来正确转换字节数组。您正在将流位置移动到0x684,该位置可能位于给出错误的两字节字符的中间。string compWrite=Convert.ToString(write);fw.WriteByte(转换为ToByte(compWrite));您正在尝试将十六进制字符串转换为字节吗?参见,例如,fw.WriteByte(Convert.ToByte(comboxVal,16))谢谢伊万·斯托夫。这正是我想要的。即使我不能正确地表达它。