如何将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)
答案 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。