2012-03-29 11 views
2

Ich entwickle gerade eine Anwendung für die Arbeit mit WAV-Dateien. Ich möchte in der Lage sein, die Information in der Struktur mit seinem nativen Typ anzuzeigen, aber C# denkt an char als einen 16-Bit-Wert.Visual Studio Debugging - Native Typen

Die vier Bytes ChunkID0 ... 3 sollen enthalten 'R' 'I' 'F' 'F' wollen

[StructLayout(LayoutKind.Explicit, Size = 12, Pack = 1)] 
public unsafe struct RiffDescriptor 
{ 
    [FieldOffset(0)] 
    public byte ChunkID_0; 

    [FieldOffset(1)] 
    public byte ChunkID_1; 

    ... 
} 

ich den Debugger den ChunkID zu zeigen, 'R' statt 122

Irgendwelche Gedanken?

+0

Warum deklarieren Sie es nicht als 'char' dann? – Jon

+0

Wie mappen Sie 122 in R? – JaredPar

+0

@Jon C# gibt an, dass ein Zeichen ein 16-Bit-Typ ist. Ich möchte den ursprünglichen Typ beibehalten. – clamport

Antwort

1
public class RiffDescriptor 
{ 
    public RiffDescriptor(BinaryReader b) 
    { 
     // Read the ChunkID - Should be RIFF 
     ChunkID = b.ReadBytes(4); 

     // Read the ChunkSize 
     ChunkSize = b.ReadUInt32(); 

     // Read the Format - Should be WAVE 
     Format = b.ReadBytes(4); 
    } 

    [DebuggerDisplay("ChunkID = {System.Text.Encoding.Default.GetString(ChunkID)}")] 
    public byte[] ChunkID; 

    public UInt32 ChunkSize; 

    [DebuggerDisplay("Format = {System.Text.Encoding.Default.GetString(Format)}")] 
    public byte[] Format; 
} 
Verwandte Themen