Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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#_Arrays_.net_File_Freeze - Fatal编程技术网

c#-如何将字节转换为短字符

c#-如何将字节转换为短字符,c#,arrays,.net,file,freeze,C#,Arrays,.net,File,Freeze,我正在尝试将字节数组转换为短数组,但它似乎不起作用。问题是,我的for循环到达位转换器时将停止。以下是我的代码片段: byte[] input = File.ReadAllBytes("frame.jpg"); short[] output = new short[input.Length / 2]; Console.WriteLine("Converting bytes to shorts"); for (int i = 0; i == input.Length; i++) { out

我正在尝试将字节数组转换为短数组,但它似乎不起作用。问题是,我的for循环到达位转换器时将停止。以下是我的代码片段:

byte[] input = File.ReadAllBytes("frame.jpg");
short[] output = new short[input.Length / 2];
Console.WriteLine("Converting bytes to shorts");
for (int i = 0; i == input.Length; i++)
{
    output[i/2] = BitConverter.ToInt16(input, i);
    Console.WriteLine(Convert.ToString(output[i/2]) + " ");
}
非常感谢您提供的任何帮助。

您在代码中使用了
ToInt16(输入,I)
。 所以我认为这是错误的。
我建议您使用
BitConverter.ToInt16(新字节[2]{(字节)输入[I],(字节)输入[I+1]},I)
来解决您的问题。

不远,只是
for
循环中的一些逻辑错误:

public static void Main()
{
        byte[] input = File.ReadAllBytes("frame.jpg");
        short[] output = new short[input.Length / 2];
        Console.WriteLine("Converting bytes to shorts");
        for (int i = 0; i < input.Length-1; i+=2)
        {
            output[i/2] = BitConverter.ToInt16(input, i);
            Console.WriteLine(Convert.ToString(output[i/2]) + " ");
        }   
}
publicstaticvoidmain()
{
byte[]input=File.ReadAllBytes(“frame.jpg”);
short[]输出=新的short[input.Length/2];
WriteLine(“将字节转换为短路”);
对于(int i=0;i

您可能还应该检查输入图像的字节数是否为偶数。

昨天我发布了一个仓促的答案并将其删除,因为老实说,这个问题可能会更好。。。经过一些推论,我得出了一个结论,你实际上想要做的是将一堆字节加载到它们的单词表示中。意思是将第一个字节左移8位,然后添加第二个字节

byte[] bytes = File.ReadAllBytes("frame.jpg");
var output = new List<ushort>();
for (int i = 0; i < bytes.Length; i += 2)
{
    try
    {
        output.Add((ushort)((bytes[i] * 256) + bytes[i + 1]));
    }
    catch (IndexOutOfRangeException ex)
    {
        output.Add((ushort)(bytes[i] * 256));
    }
}
return output.ToArray();
byte[]bytes=File.ReadAllBytes(“frame.jpg”);
var输出=新列表();
对于(int i=0;i
我认为
I==input.Length
不起作用。您不想要
i
i=i+1
?我一秒钟也不相信代码到达位转换器行时会“停止”。可能会出错,但不是停下来。这个标题让我觉得你在寻找一个在阳光明媚的地方表演的节目,不知何故……阅读图像数据检查。要从文件中读取短片,请选中