dataarray.cpp
来自「IO函数调用测试」· C++ 代码 · 共 79 行
CPP
79 行
#include "stdafx.h"
#include "DataArray.h"
#define BANDSIZE 8
/****************************************************************************
* CDataArray::bandCount
* Result: UINT
* The number of bands required to display the data
****************************************************************************/
UINT CDataArray::bandCount()
{
if(GetSize() == 0)
return 0;
return (GetSize() + BANDSIZE) / BANDSIZE;
}
/****************************************************************************
* CDataArray::byteBand
* Inputs:
* UINT i: Band to be displayed
* Result: CString
* Formatted display
* Notes:
* BANDSIZE = 16
*
* 1111111111222222222233333333334444444444555555555566666666677777
* 012345678901234567890123456789012345678901234567890123456789012345678901234
* 00000 |xxxxxxxx xxxxxxxx| xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
*
* BANDSIZE = 8
* 111111111122222222223333333333444
* 01234567890123456789012345678901234567890123
* 00000 |xxxx xxxx| xx xx xx xx xx xx xx xx
****************************************************************************/
CString CDataArray::byteBand(UINT band)
{
UINT start = band * BANDSIZE;
UINT limit = (band +1) * BANDSIZE;
UINT mid = start + BANDSIZE / 2 - 1;
CString s;
s.Format(_T("%05x |"), start);
for(UINT i = start; i < limit; i++)
{ /* scan chars */
BYTE ch;
ch = i >= (UINT)GetSize() ? ' ' : GetAt(i);
if(ch < ' ')
ch = '.';
// TODO: ch->Unicode if in UNICODE mode...
s += (TCHAR)ch;
if(i == mid)
s += _T(" ");
} /* scan chars */
s += _T("|");
for(i = start; i < limit; i++)
{ /* scan hex */
CString t;
if(i >= (UINT)GetSize())
t = _T(" ");
else
t.Format(_T(" %02x"), GetAt(i));
s += t;
if(i == mid)
s += _T(" ");
} /* scan hex */
return s;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?