C# 将字节[]转换为字节
有人能解释一下“byte”和“byte[]”在C中的区别吗?我感到困惑的是,为什么我不能将byte[]数组中的单个字节元素分配到定义为“byte”类型的变量中 例如,这项工作:C# 将字节[]转换为字节,c#,byte,C#,Byte,有人能解释一下“byte”和“byte[]”在C中的区别吗?我感到困惑的是,为什么我不能将byte[]数组中的单个字节元素分配到定义为“byte”类型的变量中 例如,这项工作: byte binSize; binSize = br.ReadByte(); 但这并不是: byte binSize1; binSize1 = br.ReadBytes(1); 我已经看过了,第一个示例返回一个字节,第二个示例返回一个字节数组。我明白了。但是,有没有简单的方法来转换由“ReadBytes”读入的单个字
byte binSize;
binSize = br.ReadByte();
但这并不是:
byte binSize1;
binSize1 = br.ReadBytes(1);
我已经看过了,第一个示例返回一个字节,第二个示例返回一个字节数组。我明白了。但是,有没有简单的方法来转换由“ReadBytes”读入的单个字节并将其强制转换,以便将其存储在“byte”变量中
这是一个问题,当我想把我读到的转换成一个整数。只有下面带有“binSize”的行可以工作,而带有“binSize1”的行不能工作
txt.Text = BitConverter.ToInt16(binSize, 0).ToString();
txt.Text = BitConverter.ToInt16(binSize1, 0).ToString();
第二行的错误是“无法将类型”byte[]转换为“byte”
有人能解释一下字节
和字节【】
之间C的区别吗
与所有其他类型的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];
}
如果您有一个字节集合,那么显然无法将其存储在单个字节中。但是,您可以存储该集合的给定项,例如第一项:
byte myByte = byteArray[0];
或者没有数组
byte myByte = byteCollection.First();
当然,在试图抓住它之前,你应该确保有第一个。数组的
Length
属性是一个很好的起点。br.ReadBytes(1)[0]代码>表示int16需要两个字节。是否确实需要转换单个字节?函数ReadBytes(int n)
的返回类型固定为byte[]
,即使n=1
也会返回一个1字节的元素数组。它不会根据输入更改其返回值类型n
。只需取消对数组的第一个元素的限制即可获得该字节。谢谢dasblinkenlight。我从概念上理解了单字节与字节数组之间的区别,我试图弄清楚的是如何将数组中的单个字节保存到“字节”中。我缺少的键是在ReadBytes(1)的末尾应用“[0]”。