我目前正在开发一个用于处理WAV文件的应用程序。我希望能够以其本机类型在结构中显示信息,但是C#将char视为16位值。
四个字节ChunkID0 ... 3应该包含'R''I''F''F'
[StructLayout(LayoutKind.Explicit, Size = 12, Pack = 1)]
public unsafe struct RiffDescriptor
{
[FieldOffset(0)]
public byte ChunkID_0;
[FieldOffset(1)]
public byte ChunkID_1;
...
}
我希望调试器将ChunkID显示为“ R”而不是122。
有什么想法吗?
最佳答案
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;
}
关于c# - Visual Studio调试- native 类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9934672/