我目前正在开发一个用于处理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/

10-10 03:50