[feat] 串口hex输出可选择是否补0
This commit is contained in:
+23
-7
@@ -32,15 +32,31 @@ void serial_write(String str) {
|
||||
}
|
||||
}
|
||||
|
||||
void serial_write_hex(UINTN val) {
|
||||
void serial_write_hex(UINTN val, bool fill) {
|
||||
char buf[19];
|
||||
buf[0] = '0'; buf[1] = 'x';
|
||||
for (SSINT32 i = 17; i >= 2; i--) {
|
||||
UINTN digit = val & 0xF;
|
||||
buf[i] = digit < 10 ? '0' + digit : 'A' + digit - 10;
|
||||
val >>= 4;
|
||||
buf[0] = '0';
|
||||
buf[1] = 'x';
|
||||
SSINT32 pos = 2;
|
||||
if (val == 0) {
|
||||
buf[pos++] = '0';
|
||||
} else {
|
||||
char tmp[17];
|
||||
SSINT32 len = 0;
|
||||
while (val) {
|
||||
UINTN digit = val & 0xF;
|
||||
tmp[len++] = digit < 10 ? '0' + digit : 'A' + digit - 10;
|
||||
val >>= 4;
|
||||
}
|
||||
if (fill) {
|
||||
while (len < 16) {
|
||||
buf[pos++] = '0';
|
||||
}
|
||||
}
|
||||
for (SSINT32 i = len - 1; i >= 0; i--) {
|
||||
buf[pos++] = tmp[i];
|
||||
}
|
||||
}
|
||||
buf[18] = '\0';
|
||||
buf[pos] = '\0';
|
||||
serial_write(buf);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user