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))代码>谢谢伊万·斯托夫。这正是我想要的。即使我不能正确地表达它。