728x90
이번엔 생각외로 머리쓰며 만든 함수이다.
1바이트를 n배만큼 증가하여 배열로 리턴시켜주는 함수...
이 녀석은 생성된 이미지를 원하는 크기만큼 Enlarge 시켜주기 위한 함수로 만들었다..
소스는 다음과 같다.. 메인 함수는 ByteXNum함수이고
0x81을 2배하면 0xC0 03 3배하면 0xE0 00 07 이 나온다.
개발환경때문에 1~16배 까지만 된다.
// test_qr.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<string.h> unsigned char buf[20]; unsigned char rotate_shift(unsigned char shift_n,unsigned char shift_value) { int i; for(i=0;i<shift_n;i++) { shift_value>>=1; if(shift_value==0) shift_value = 0x80; } return shift_value; } void ByteXNum(char nMux,unsigned char src_byte,unsigned char* ret_array) { // 1바이트를 입력받아서 2~16배의 배열로 리턴하는 함수 int i,j=0,array_index = 0;; unsigned char calc_byte,k; unsigned char tmp_byte; int nMuxBit = 8*nMux; memset(ret_array,0,16); calc_byte = 0x80; for(k=0x80;k!=0x00;k>>=1) { if(src_byte&k) { for(i=0;i<nMux;i++) { ret_array[j] |= calc_byte; calc_byte>>=1; array_index++; if(array_index>7){ j++; calc_byte = 0x80;//tmp_byte; array_index-=8; } } } else{ calc_byte = rotate_shift(nMux<8?nMux:nMux-8,calc_byte); array_index+=nMux; while(array_index>7){ j++; array_index-=8; }; } } /*for(i=0;i<16;i++) printf("0x%02x\n\r",ret_array[i]); */ } int main(int argc, char* argv[]) { int a; const int copy_num = 4; const int width = 1; const int height = 8; unsigned char qr_buf[width*height]; unsigned char tmp_buf[64*512]; unsigned char *p; int i,j,k=0,l; p = tmp_buf; for(i=0;i<width*height/*72*/;i+=2){ qr_buf[i]=0x81; qr_buf[i+1]=0x18; //if(i%3==0) qr_buf[i]=0xff; } if(width*8*16 > 512) printf("\n\r Size oVer!!! \n\r "); else{ for(i=0;i<height;i++) { for(j=0;j<width;j++) { ByteXNum(copy_num,qr_buf[(i*width)+j],buf); memcpy(p,buf,copy_num); p+=copy_num; } for(l=0;l<copy_num-1;l++) { memcpy(p,p-(width*copy_num),width*copy_num); p+=width*copy_num; } } } //ByteXNum(16,0xfe,buf); printf("Hello World!\n"); return 0; } |
728x90
'개발이야기' 카테고리의 다른 글
펌웨어를 위한 C언어 1분코딩강좌 #05 포인터 기초 (0) | 2021.05.04 |
---|---|
펌웨어를 위한 C언어 1분코딩강좌 #04 rand()함수 분석 및 실무 팁 (0) | 2021.04.26 |
게임보이와 Hello world #게임보이개발 (0) | 2021.04.16 |
(C언어) 구조체 배열 캐스팅하기 (0) | 2021.04.15 |
J-Link 의 시리얼 넘버 가져오기 (0) | 2021.04.15 |