Wie konvertiere ich eine byte[]
zu einer string
? Jedes Mal, wenn ich es versuche, bekomme ich
System.Byte[]
anstelle des Wertes.
Und wie erhalte ich den Wert in Hexadezimal- statt in Dezimalwerten?
Wie konvertiere ich eine byte[]
zu einer string
? Jedes Mal, wenn ich es versuche, bekomme ich
System.Byte[]
anstelle des Wertes.
Und wie erhalte ich den Wert in Hexadezimal- statt in Dezimalwerten?
Wie andere bereits gesagt haben, hängt es von der Kodierung der Werte im Byte-Array ab. Trotzdem müssen Sie sehr vorsichtig mit dieser Art von Dingen sein, oder Sie können versuchen, Bytes zu konvertieren, die von der gewählten Kodierung nicht behandelt werden.
Jon Skeet hat ein guter Artikel über Kodierung und Unicode in .NET. Empfohlene Lektüre.
Ich bin mir nicht sicher, ob Sie Leistung benötigen, um dies zu tun, aber hier ist die schnellste Methode zur Konvertierung von Byte[] in Hex-String, die ich mir vorstellen kann:
static readonly char[] hexchar = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
public static string HexStr(byte[] data, int offset, int len, bool space = false)
{
int i = 0, k = 2;
if (space) k++;
var c = new char[len * k];
while (i < len)
{
byte d = data[offset + i];
c[i * k] = hexchar[d / 0x10];
c[i * k + 1] = hexchar[d % 0x10];
if (space && i < len - 1) c[i * k + 2] = ' ';
i++;
}
return new string(c, 0, c.Length);
}
private static string GuidToRaw(Guid guid)
{
byte[] bytes = guid.ToByteArray();
int harCount = bytes.Length * 2;
char[] chars = new char[harCount];
int index = 0;
for (int i = 0; i < harCount; i += 2)
{
byte b = bytes[index++];
chars[i] = GetHexValue((int)(b / 16));
chars[i + 1] = GetHexValue((int)(b % 16));
}
return new string(chars, 0, chars.Length);
}
private static char GetHexValue(int i)
{
return (char)(i < 10 ? i + 48 : i + 55);
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.