c#-如何将字节转换为短字符
我正在尝试将字节数组转换为短数组,但它似乎不起作用。问题是,我的for循环到达位转换器时将停止。以下是我的代码片段: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
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
?我一秒钟也不相信代码到达位转换器行时会“停止”。可能会出错,但不是停下来。这个标题让我觉得你在寻找一个在阳光明媚的地方表演的节目,不知何故……阅读图像数据检查。要从文件中读取短片,请选中