具体代码如下:
#include <iostream>
using namespace std;void convertAndPrint(unsigned char *arr, int ROWS, int COLS) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
//*(arr + i*COLS + j) = static_cast<int>(*(arr + i*COLS + j));
if (*(arr + i*COLS + j) >= 0 && *(arr + i*COLS + j) <= 8)
*(arr + i*COLS + j) = 0;
else if (*(arr + i*COLS + j) > 8 && *(arr + i*COLS + j) <= 15)
*(arr + i*COLS + j) = *(arr + i*COLS + j) - 8;
else if (*(arr + i*COLS + j) > 15 && *(arr + i*COLS + j) <= 95)
*(arr + i*COLS + j) = *(arr + i*COLS + j) + 8;
else if (*(arr + i*COLS + j) > 95 && *(arr + i*COLS + j) <= 111)
*(arr + i*COLS + j) = *(arr + i*COLS + j) + 4;
else if (*(arr + i*COLS + j) > 111 && *(arr + i*COLS + j) <= 191)
*(arr + i*COLS + j) = *(arr + i*COLS + j);
else if (*(arr + i*COLS + j) > 191 && *(arr + i*COLS + j) <= 239)
*(arr + i*COLS + j) = *(arr + i*COLS + j) - 8;
else
*(arr + i*COLS + j) = *(arr + i*COLS + j) - 10;
}
}
}void printArray(unsigned char* arr, int ROWS, int COLS) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", *(arr + i*COLS + j));
}
printf("\n");
}
}
int main() {
unsigned char hexArray[4][4] = {
{ 0x06, 0x52, 0xe9, 0xfe, },
{ 0x37, 0x79, 0xa5, 0xda, },
{ 0xc7, 0x86, 0x69, 0x29, },
{ 0xf3, 0xb4, 0x12, 0x03, }
};
/*int ROWS = sizeof(hexArray) / sizeof(hexArray[0]);
int COLS = sizeof(hexArray[0]) / sizeof(hexArray[0][0]);*/printf("原始数组:\n");
printArray(*hexArray, 4, 4);
convertAndPrint(*hexArray, 4, 4);
printf("\n操作后数组:\n");
printArray(*hexArray, 4, 4);
system("pause");
return 0;
}
运行结果如下: