将visual c ++ array <char>转换为long </char>

时间:2012-09-05 14:14:27

标签: arrays c++-cli

我想从文件中读取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函数......

3 个答案:

答案 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);