Ich möchte eine Zeichenfolge in einem Array von Int neu interpretieren, wobei jedes Int auf der Grundlage der Prozessorarchitektur 4 oder 8 Zeichen übernehmen.reinterpretieren ein Array von String in int
Gibt es eine Möglichkeit, dies relativ kostengünstig zu erreichen? Ich versuchte dies, aber scheint nicht 4 Zeichen in einem int
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 ]);
}
}
}
SOLUTION neu zu interpretieren: (Änderung Int64 oder Int32 nach Ihren Bedürfnissen)
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 ]);
}
}
}
Zeichen in C# sind 2 Bytes, also mit einem Int32-Zeiger erhalten Sie zwei Zeichen pro int. – Erik
Wenn Sie wissen, dass Ihre Zeichen 8-Bit-freundlich sind, können Sie sie extrahieren und vier in jede ganze Zahl stopfen, aber Sie müssten eine Kopie der Daten erstellen. – yoyo
Bitte beachten Sie ["Sollten Fragen enthalten" Tags "in ihren Titeln?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-the-titles), wo der Konsens ist "nein, sollten sie nicht"! –