Changeset 684 for trunk/libs/mini-libc/stdio.c
- Timestamp:
- Jan 13, 2021, 12:40:22 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libs/mini-libc/stdio.c
r677 r684 142 142 } 143 143 case ('x'): // up to 8 digits hexa after "0x" 144 case ('X'): // exactly 8 digits hexa after "0x"145 144 { 146 145 unsigned int val = va_arg( *args , unsigned int ); … … 150 149 { 151 150 buf[7 - i] = HexaTab[val & 0xF]; 152 if( (*format == 'x') && ((val >> 4) == 0) ) break;153 151 val = val >> 4; 152 if( val == 0) break; 154 153 } 155 154 len = i + 1; … … 157 156 break; 158 157 } 158 case ('X'): // exactly 8 digits hexa after "0x" 159 { 160 unsigned int val = va_arg( *args , unsigned int ); 161 TO_STREAM( '0' ); 162 TO_STREAM( 'x' ); 163 for(i = 0 ; i < 8 ; i++) 164 { 165 buf[7 - i] = (val != 0) ? HexaTab[val & 0xF] : '0'; 166 val = val >> 4; 167 } 168 len = 8; 169 pbuf = &buf[0]; 170 break; 171 } 159 172 case ('l'): // up to 16 digits hexa after "0x" 160 case ('L'): // exactly 16 digits hexa after "0x"161 173 { 162 174 unsigned long long val = ((unsigned long long)va_arg( *args, unsigned int)) | … … 167 179 { 168 180 buf[15 - i] = HexaTab[val & 0xF]; 169 if( (*format == 'l') && ((val >> 4) == 0) ) break;170 181 val = val >> 4; 182 if( val == 0) break; 171 183 } 172 184 len = i + 1; 173 185 pbuf = &buf[15 - i]; 186 break; 187 } 188 case ('L'): // exactly 16 digits hexa after "0x" 189 { 190 unsigned long long val = ((unsigned long long)va_arg( *args, unsigned int)) | 191 ((unsigned long long)va_arg( *args, unsigned int) << 32); 192 TO_STREAM( '0' ); 193 TO_STREAM( 'x' ); 194 for(i = 0 ; i < 16 ; i++) 195 { 196 buf[15 - i] = (val != 0) ? HexaTab[val & 0xF] : '0'; 197 val = val >> 4; 198 } 199 len = 16; 200 pbuf = &buf[0]; 174 201 break; 175 202 }
Note: See TracChangeset
for help on using the changeset viewer.