首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

byte数组大小问题

发布网友 发布时间:2022-04-26 22:53

我来回答

3个回答

热心网友 时间:2022-06-19 12:18

我做了个测试:
string msg = "我是我是我是我是我是";
Byte[] b = Encoding.Unicode.GetBytes(msg);
MemoryStream ms = new MemoryStream(b);
byte[] buffer = new byte[4];
ms.Read(buffer, 0, (Int32)ms.Length);
// buffer = Encoding.Unicode.GetBytes(msg);
string result = Encoding.Unicode.GetString(buffer);
Console.WriteLine(result);
Console.ReadLine();
这个代码就会报错,说数组超过大小。
但是你的那个代码为什么没报错呢?因为数组是引用类型;
虽然你 开始 初始化了 长度为4;
但是你后来又写了 buffer= Encoding.Unicode.GetBytes(msg);
右边这个是一个长度为20的字节数组,由于byte []是引用类型,他的数据是放在称为“堆”的内存区域中,所以指向了一个新的引用,即Encoding.Unicode.GetBytes(msg); 所以即使长度变多了也不会报错。

热心网友 时间:2022-06-19 12:18

1 byte = 1字节 = 8bit
一个unicode 表示的汉字 = 2字节 = 16bit
byte[] buffer = new byte[4]; 的意思是 新建了一个,byte类型的数组,长度为4,也就是说 这个数组中有 四个 byte,整个数组的大小 =4 * 1字节=4个字节

string msg = "我是我是我是我是我是"; 占 20个字节

逻辑上看,是装不进去的,数组会越界

热心网友 时间:2022-06-19 12:19

数组长度是16好不,byte的长度才是

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com