BitConverter.ToDouble()
을 사용하여 바이트 배열을 double 배열로 변환하는 데 문제가 있습니다.바이트 배열을 double로 변환 할 때의 문제
단순히 내 프로그램에서 이미지를 선택하고 이미지를 바이트 배열로 변환합니다. 그러면 바이트 배열을 double 배열로 변환합니다.
바이트 배열을 double로 변환하면 루프가 끝나기 전에이 오류가 발생합니다.
(대상 배열 컬렉션에서 모든 항목을 복사 할 충분한 시간이 아니다. 배열 인덱스 및 길이를 확인하십시오.)
가 오류가 마지막 전에 마지막 일곱 번째 위치 인 사항 Array.length-7 위치에 정확히 발생 배열의 위치.
private Bitmap loadPic;
byte[] imageArray;
double[] dImageArray;
private void btnLoad_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(open.FileName);
loadPic = new Bitmap(pictureBox1.Image);
}
}
catch
{
throw new ApplicationException("Failed loading image");
}
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
private void btnConvert_Click(object sender, EventArgs e)
{
imageArray = imageToByteArray(loadPic);
int index = imageArray.Length;
dImageArray = new double[index];
for (int i = 0; i < index; i++)
{
dImageArray[i] = BitConverter.ToDouble(imageArray,i);
}
}
public byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, ImageFormat.Gif);
return ms.ToArray();
}
아니, 그게 아니에요. BitConverter와 완전히 다른 결과를 생성하는 캐스트를 사용 중입니다. –
나는 자신의 루프 (및 그의 배열 초기화)를 토대로 BitConverter가 자신이 원하는 것이라고 생각하지 않는다는 것을 알리기 위해 내 게시물을 명확히했다. – Sapph
네, 네가 맞다고 생각해. +1 –