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)
】