안드로이드 개발자 모임 게시판
(글 수 5,405)
부트로더 들어 있는 fastboot code를 보면.....
hex2unsigned 함수가 있더군요...
static unsigned hex2unsigned(char *x)
{
unsigned n = 0;
while(*x) {
switch(*x) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
n = (n << 4) | (*x - '0');
break;
case 'a': case 'b': case 'c':
case 'd': case 'e': case 'f':
n = (n << 4) | (*x - 'a' + 10);
break;
case 'A': case 'B': case 'C':
case 'D': case 'E': case 'F':
n = (n << 4) | (*x - 'A' + 10);
break;
default:
return n;
}
x++;
}
return n;
}
의 내용입니다.....저는 이 코드가 문제가 있다고 생각하는데...
보통 hex 변환 함수는 이런식으로 만드는건가요?
hex2unsigned 함수가 있더군요...
static unsigned hex2unsigned(char *x)
{
unsigned n = 0;
while(*x) {
switch(*x) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
n = (n << 4) | (*x - '0');
break;
case 'a': case 'b': case 'c':
case 'd': case 'e': case 'f':
n = (n << 4) | (*x - 'a' + 10);
break;
case 'A': case 'B': case 'C':
case 'D': case 'E': case 'F':
n = (n << 4) | (*x - 'A' + 10);
break;
default:
return n;
}
x++;
}
return n;
}
의 내용입니다.....저는 이 코드가 문제가 있다고 생각하는데...
보통 hex 변환 함수는 이런식으로 만드는건가요?
2009.10.06 15:21:34
이거 때문에 문제가 있었다고 생각했거든요. fastboot으로 이미지 다운로드 받을 때 download: 라는 명령어 뒤에 size를 붙이는데
그 값을 hex -> decimal로 변환해서 그 사이즈만큼 host에서 보내주길 기다리는데....
8bit만 딱 읽고 그 후 값은 무시해야 하는데 우연하게도 여러 사이즈 이미지 다운받다보니........9bit째에 저 case에 걸리는 쓰레기 값이 들어있더라구요....그래서 사이즈를 말도 안되게 큰 값을 기다리고 있어서 다운로드가 안되던 문제(?)가 있었습니다.
그 값을 hex -> decimal로 변환해서 그 사이즈만큼 host에서 보내주길 기다리는데....
8bit만 딱 읽고 그 후 값은 무시해야 하는데 우연하게도 여러 사이즈 이미지 다운받다보니........9bit째에 저 case에 걸리는 쓰레기 값이 들어있더라구요....그래서 사이즈를 말도 안되게 큰 값을 기다리고 있어서 다운로드가 안되던 문제(?)가 있었습니다.