462,26 → 462,21 |
void Decode64(void) |
{ |
uint8_t a,b,c,d; |
uint8_t x,y,z; |
uint8_t ptrIn = 3; |
uint8_t ptrOut = 3; |
uint8_t len = ReceivedBytes - 6; |
|
while(len) |
len/=4; |
while(len--) |
{ |
a = rxd_buffer[ptrIn++] - '='; |
b = rxd_buffer[ptrIn++] - '='; |
c = rxd_buffer[ptrIn++] - '='; |
d = rxd_buffer[ptrIn++] - '='; |
//if(ptrIn > ReceivedBytes - 3) break; |
|
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
|
if(len--) rxd_buffer[ptrOut++] = x; else break; |
if(len--) rxd_buffer[ptrOut++] = y; else break; |
if(len--) rxd_buffer[ptrOut++] = z; else break; |
rxd_buffer[ptrOut++] = (a << 2) | (b >> 4); |
rxd_buffer[ptrOut++] = ((b & 0x0f) << 4) | (c >> 2); |
rxd_buffer[ptrOut++] = ((c & 0x03) << 6) | d; |
} |
pRxData = &rxd_buffer[3]; |
RxDataLen = ptrOut - 3; |