Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节[]转换为字节_C#_Byte - Fatal编程技术网

C# 将字节[]转换为字节

C# 将字节[]转换为字节,c#,byte,C#,Byte,有人能解释一下“byte”和“byte[]”在C中的区别吗?我感到困惑的是,为什么我不能将byte[]数组中的单个字节元素分配到定义为“byte”类型的变量中 例如,这项工作: byte binSize; binSize = br.ReadByte(); 但这并不是: byte binSize1; binSize1 = br.ReadBytes(1); 我已经看过了,第一个示例返回一个字节,第二个示例返回一个字节数组。我明白了。但是,有没有简单的方法来转换由“ReadBytes”读入的单个字

有人能解释一下“byte”和“byte[]”在C中的区别吗?我感到困惑的是,为什么我不能将byte[]数组中的单个字节元素分配到定义为“byte”类型的变量中

例如,这项工作:

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]”。