我想从文件中读取8个字节。
StreamReader^ sr = gcnew StreamReader( "ReadMe.txt" );
long convert = 0;
array<Char>^c = nullptr;
while ( sr->Peek() >= 0 )
{
c = gcnew array<Char>(8);
sr->Read( c, 0, c->Length );
convert = (long) c; //<- the problem
Console::WriteLine( c );
Console::WriteLine( convert );
}
但我得到了这个输出:
EA00A10C&lt; - 与文件相同
37745844&lt; - 错误(即使转换为十六进制)
注意: atoi不接受类型数组,我没有找到数组.ToInt函数......
答案 0 :(得分:2)
您可能正在寻找
System::Int32::Parse(c, NumberStyles::HexNumber)
答案 1 :(得分:0)
也许这个? (:
http://msdn.microsoft.com/en-us/library/c36yw7x9(v=vs.80).aspx
示例:
float f = 3.3; int n = static_cast(f);
答案 2 :(得分:0)
您尝试通过强制转换将指针转换为long。但是,您需要将字符数组(数字的文本表示)转换为数字值。
Ben Voigt的System::Int32::Parse(c, NumberStyles::HexNumber)
会这样做。
基本上,这与
相同convert = strtol(&c[0], &c[7], 16);