将TextBox字符串转换为Byte

时间:2014-03-21 08:20:45

标签: visual-c++ c++-cli

如何将TextBox字符串值转换为Byte。我有:

     array<Byte>^ mybytes = gcnew array<Byte>{6,2,1}; 
     mybytes[1] = motor1ForwardTextBox->Text->System::IConvertible::ToByte;
     System::Diagnostics::Debug::Write(mybytes[1]);

但第二行有错误:

Error   2   error C2440: '=' : cannot convert from 'unsigned char (__clrcall System::IConvertible::* )(System::IFormatProvider ^)' to 'unsigned char'   c:\users\guest4\documents\avr\serial2\serial2\Form1.h   563 1   serial2 (Visual Studio 2010)

2 个答案:

答案 0 :(得分:1)

String执行IConvertible::ToByte方法的显式实现,因此您需要强制转换它。

当然,你需要实际调用该方法。该错误消息表明它无法从返回unsigned char的方法转换为unsigned char。

mybytes[1] = dynamic_cast<IConvertible^>(motor1ForwardTextBox->Text)->ToByte();
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                    ^^

答案 1 :(得分:1)

一种直截了当的方式是:

mybytes[1] = Byte::Parse(motor1ForwardTextBox->Text);

毕竟,您想要的转换性质是解析十进制数字。

无论哪种方式,如果字符不是带有可选+和 - 的数字,或者值不在0到255范围内,您将获得异常。不幸的是,即使解析为Byte也不接受“,”或“。”,可接受的数字字符取决于文化。因此,如有必要,请传递IFormatProvider。