有人能解释一下‘C#’和'byte[]‘之间的区别吗?我的困惑就是为什么我不能将byte[]数组中的单个字节元素分配到一个定义为“字节”类型的变量中。
例如,这起作用是:
byte binSize;
binSize = br.ReadByte();但这并不意味着:
byte binSize1;
binSize1 = br.ReadBytes(1);我查看了Microsoft二进制读取器类,我发现第一个示例返回一个字节,第二个返回一个字节数组。我懂了。但是,有什么简单的方法可以将“ReadBytes”读取的单个字节转换为可以存储在“字节”变量中吗?
当我想将读取的内容转换为整数时,这是一个问题。只有下面有'binSize‘的行才能工作,而使用'binSize1’的行就不能工作。
txt.Text = BitConverter.ToInt16(binSize, 0).ToString();
txt.Text = BitConverter.ToInt16(binSize1, 0).ToString(); 第二行的错误是“无法将”byte[]“转换为”字节“。
发布于 2016-12-08 18:21:39
有人能解释一下C#在
byte和byte[]中的区别吗?
T和T[]与所有其他类型的区别是一样的:T是单个项,而T[]是数组。
有什么简单的方法可以转换
ReadBytes()读取的单个字节并将其转换为可以存储在byte变量中吗?
如果您知道一个函数只返回一个字节的数组,那么将[0]应用于它的返回值:
binSize1 = br.ReadBytes(1)[0];请注意,这种方法是不安全的,因为您不确定br.ReadBytes(1)至少有一个字节。最好单独检查一下:
var bytes = br.ReadBytes(1);
if (bytes.Length == 1) {
var binSize1 = bytes[0];
}发布于 2016-12-08 18:21:56
如果您有一个字节集合,那么显然不能将它存储在一个字节中。但是,您可以存储该集合中的给定项,例如,第一个:
byte myByte = byteArray[0];或者没有数组
byte myByte = byteCollection.First();当然,在尝试抓取它之前,您可能应该确保有第一个。数组的Length属性是一个很好的起点。
https://stackoverflow.com/questions/41046208
复制相似问题