【问题标题】:c# - How can i convert bytes to shortsc# - 如何将字节转换为短裤
【发布时间】:2018-11-25 04:41:46
【问题描述】:

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

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]) + " ");
}

感谢您提供的任何帮助。

【问题讨论】:

  • 我认为i == input.Length 不会起作用。你不想要i < input.Length - 1i = i + 1 吗?我一秒钟都不相信您的代码在到达 BitConverter 行时会“停止”。可能会出错,但不会停止。
  • 这个标题让我觉得你是在一个阳光明媚的地方寻找编程演出,不知何故......
  • 读取图像数据检查Image.FromFile。要从文件中读取短裤,请检查BinaryReader

标签: c# arrays .net file freeze


【解决方案1】:

昨天我发布了一个仓促的答案并将其删除,因为老实说,这个问题可能会好很多......通过一些推断,我得出的结论是你真正想要做的是加载一堆字节进入他们的单词表示。意思是将第一个字节左移 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();

【讨论】:

    【解决方案2】:

    不远了,只是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]) + " ");
            }   
    }
    

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

    【讨论】:

      【解决方案3】:

      您在代码中使用了ToInt16(input, i)。 所以我认为这是错误的。 我建议您使用BitConverter.ToInt16(new byte[2] {(byte)input[i] , (byte)input[i+1] },i) 来解决您的问题。

      猜你喜欢
      • 2014-10-21
      • 2011-08-24
      • 1970-01-01
      • 2011-12-03
      • 2011-01-30
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多