超简单的一个问题, 怎样固定 byte[] 类型变量的长度呢??

tank_2009 2010-04-29 02:07:25
byte[] buffer = new byte[10];
buffer = System.Text.Encoding.Unicode.GetBytes("aa");

这时候, buffer的Lenght变成4了, 有希望他的长度一直是最开始申明的10... 应该怎样可以实现呢?
...全文
244 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpingz 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cjcgy 的回复:]

byte[] buffer = new byte[10];
System.Text.Encoding.Unicode.GetBytes("aa").CopyTo(buffer, 0);
[/Quote]
可以。
tank_2009 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cjcgy 的回复:]
byte[] buffer = new byte[10];
System.Text.Encoding.Unicode.GetBytes("aa").CopyTo(buffer, 0);
[/Quote]

谢谢....
haa17 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 findcaiyzh 的回复:]

先澄清下lz的错误概念

byte[] buffer = new byte[10]; //内存中分配10 byte空间,并让buffer指向它

buffer = System.Text.Encoding.Unicode.GetBytes("aa"); //buffer指向新的内存(猜测GetBytes中分配的)。上句分配的10 byte空间已经准备好被垃圾收集了。

因此byte[……
[/Quote]

同意
烈火蜓蜻 2010-04-29
  • 打赏
  • 举报
回复 1
byte[] buffer = new byte[10];
buffer = System.Text.Encoding.Unicode.GetBytes("aa");


这样,其实,已经变了,

buffer已经不是指向原来的那个new byte[10]的起始地址,而是一个新的地址了

如果你想不变的话,只能这样


byte[] buffer = new byte[10];
byte[] buffer2= System.Text.Encoding.Unicode.GetBytes("aa");

然后,把 buffer2的前10个复制到buffer中,如果少于10个就有多少复制多少个过去
cjcgy 2010-04-29
  • 打赏
  • 举报
回复
byte[] buffer = new byte[10];
System.Text.Encoding.Unicode.GetBytes("aa").CopyTo(buffer, 0);
宝_爸 2010-04-29
  • 打赏
  • 举报
回复
先澄清下lz的错误概念

byte[] buffer = new byte[10]; //内存中分配10 byte空间,并让buffer指向它

buffer = System.Text.Encoding.Unicode.GetBytes("aa"); //buffer指向新的内存(猜测GetBytes中分配的)。上句分配的10 byte空间已经准备好被垃圾收集了。

因此byte[] buffer = new byte[10]; 完全是多余的。
lpingz 2010-04-29
  • 打赏
  • 举报
回复
非这样做的话,只好判断length是否为10,然后将后面补空字符了。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧