我想在int数组中重新解释一个字符串,其中每个int根据处理器架构负责4或8个字符.
有没有办法以相对便宜的方式实现这一目标?
我试过这个,但似乎没有在一个int中重新解释4个字符
string text = "abcdabcdefghefgh"; unsafe { fixed( char* charPointer = text ) { Int32* intPointer = (Int32*)charPointer; for( int index = 0; index < text.Length / 4; index++ ) { Console.WriteLine( intPointer[ index ] ); } } }
解决方案:(根据您的需要更改Int64或Int32)
string text = "abcdabcdefghefgh"; unsafe { fixed( char* charPointer = text ) { Int64* intPointer = (Int64*)charPointer; int conversionFactor = sizeof( Int64 ) / sizeof( char ); int index = 0; for(index = 0; index < text.Length / conversionFactor; index++) { Console.WriteLine( intPointer[ index ] ); } if( text.Length % conversionFactor != 0 ) { intPointer[ index ] <<= sizeof( Int64 ); intPointer[ index ] >>= sizeof( Int64 ); Console.WriteLine( intPointer[ index ] ); } } }