PDA

View Full Version : سوال: تحلیل کد



sevenboys
دوشنبه 29 آبان 1391, 11:54 صبح
using (BinaryReader b = new BinaryReader(File.Open(strFileName, FileMode.Open)))
{
int pos = 0;

int length = (int)b.BaseStream.Length;
double[] data = new double[length];
int[] data1 = new int[length];
int idx = 0;

while (pos < length)
{
data[idx] = b.ReadDouble();
data1[idx] = idx;
idx++;
pos += sizeof(double); چه کاری انجام میدهد؟؟
}
axTChart1.Series(0).AddArray(length / sizeof(double), data, data1);
از دوستان اگه کسی هست که این کد را برام تحلیل کنه ممنون میشم

hakim22
دوشنبه 29 آبان 1391, 19:48 عصر
این کد یک فایل باینری رو میخونه و یک سری عدد از نوع دابل رو در یک نمودار ترسیم میکنه

این خط :

pos += sizeof(double); چه کاری انجام میدهد؟؟

pos در این کد نمایانگر محلی است که فایل خان در آن قرار گرفته.
و هر بار به اندازه ی یک مقدار Double (که درست برابر فضایی است که برای ذخیره سازی یک عدد از نوع دابل مورد نیاز است) از فایل را میخواند.

فرض کنید یک نوار بلند دارید که در فواصل معینی یک عددی رویش نوشته شده.
حالا برای خواندن این اعداد شما از ابتدای نوار شروع میکنید و یک عدد را میخوانید سپس به فاصله ی بعدی جهش می کنید تا به انتهای نوار برسید.

یک عدد از نوع Double حجمی از فایل را به مقدار sizeOf(double) اشغال می کند. در نتیجه برای استخراج اعداد از یک فایل باینری باید به انداز sizeOf(double در هر بار خواند موقعیت خود را تغییر دهید