C# 如何用0xFF字节填充字节[]?

C# 如何用0xFF字节填充字节[]?,c#,bytearray,padding,C#,Bytearray,Padding,此问题是此问题的后续问题 我编写了一个小方法来填充字节[],就像内存流一样: public static Stream FillWithPadding(Stream MS, int Count) { byte[] buffer = new byte[64]; for (int i = 0; i < buffer.Length; i++) { buffer[i] = 0xFF; } while (Count > buffer.Le

此问题是此问题的后续问题

我编写了一个小方法来填充
字节[]
,就像
内存流一样:

public static Stream FillWithPadding(Stream MS, int Count)
{
    byte[] buffer = new byte[64];
    for (int i = 0; i < buffer.Length; i++)
    {
        buffer[i] = 0xFF;
    }
    while (Count > buffer.Length)
    {
        MS.Write(buffer, 0, buffer.Length);
        Count -= buffer.Length;
    }
    MS.Write(buffer, 0, Count);
    return MS;
}

public static byte[] FillWithPadding(byte[] Buffer, int Count)
{
    using (MemoryStream MS = new MemoryStream())
    {
        MS.Write(Buffer, 0, Buffer.Length);
        MemoryStream msw = FillWithPadding(MS, Count) as MemoryStream;
        return msw.GetBuffer();
    }
}
公共静态流FillWithPadding(流MS,int计数)
{
字节[]缓冲区=新字节[64];
for(int i=0;i缓冲区长度)
{
MS.Write(缓冲区,0,缓冲区长度);
计数-=缓冲区长度;
}
MS.Write(缓冲区,0,计数);
返回MS;
}
公共静态字节[]填充填充(字节[]缓冲区,整数计数)
{
使用(MemoryStream MS=new MemoryStream())
{
MS.Write(缓冲区,0,缓冲区长度);
MemoryStream msw=作为MemoryStream填充(毫秒,计数);
返回msw.GetBuffer();
}
}
此代码无效

相反,它在末尾创建
0xFF
+
0x00


任何人都可以澄清一下,为什么这不起作用???

MemoryStream.GetBuffer()
返回MemoryStream用于存储数据的内部字节数组。最初它填充为0,并由Write填充到流长度


很可能您希望使用MemoryStream.ToArray()来代替它,它返回被截断为实际长度的缓冲区副本。

MemoryStream.GetBuffer()
返回MemoryStream用于存储数据的内部字节数组。最初它填充为0,并由Write填充到流长度


很可能您希望使用MemoryStream.ToArray()而不是返回被截断为实际长度的缓冲区副本。

这就是现在流中的位置。 写入前使用MS.Position=0

public static Stream FillWithPadding(Stream MS, int Count)
{
    byte[] buffer = new byte[64];
    for (int i = 0; i < buffer.Length; i++)
    {
        buffer[i] = 0xFF;
    }
    MS.Position = 0;
    while (Count > buffer.Length)
    {
        MS.Write(buffer, 0, buffer.Length);
        Count -= buffer.Length;
    }
    MS.Write(buffer, 0, Count);
    return MS;
}
公共静态流FillWithPadding(流MS,int计数)
{
字节[]缓冲区=新字节[64];
for(int i=0;i缓冲区长度)
{
MS.Write(缓冲区,0,缓冲区长度);
计数-=缓冲区长度;
}
MS.Write(缓冲区,0,计数);
返回MS;
}

这就是现在流中的位置。 写入前使用MS.Position=0

public static Stream FillWithPadding(Stream MS, int Count)
{
    byte[] buffer = new byte[64];
    for (int i = 0; i < buffer.Length; i++)
    {
        buffer[i] = 0xFF;
    }
    MS.Position = 0;
    while (Count > buffer.Length)
    {
        MS.Write(buffer, 0, buffer.Length);
        Count -= buffer.Length;
    }
    MS.Write(buffer, 0, Count);
    return MS;
}
公共静态流FillWithPadding(流MS,int计数)
{
字节[]缓冲区=新字节[64];
for(int i=0;i缓冲区长度)
{
MS.Write(缓冲区,0,缓冲区长度);
计数-=缓冲区长度;
}
MS.Write(缓冲区,0,计数);
返回MS;
}

产生此“问题”的
Count的最小值是多少?
产生此“问题”的
Count的最小值是多少?这是不正确的!如果你阅读了另一个问题,你会发现我想在流本身的内容之后填充流。[设置位置的最佳方法是
MS.Seek(0,SeekOrigin.Begin)
]这是不正确的!如果您阅读了另一个问题,您会发现我想在流本身的内容之后填充流。【设置位置的最佳方法是
MS.Seek(0,请参见korigin.Begin)