📄 num.c
字号:
#include "Glib.h"
void GUI_DispDecAt(I32 v, I16P x, I16P y, U8 Len) {
char ac[12];
char* s = ac;
GUI_AddDecShift(v, Len, 0, &s);
Disp_String(ac, x, y);
}
const U32 GUI_Pow10[10] = {
1 , 10, 100, 1000, 10000,
100000, 1000000, 10000000, 100000000, 1000000000
};
void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char**ps) {
char c,GUI_DecChar;
long d;
GUI_DecChar = '.';
if (Shift) Len--;
if ((U32)v >= GUI_Pow10[Len])
v = GUI_Pow10[Len]-1;
while (Len)
{
if (Len--==Shift)
*(*ps)++ = GUI_DecChar;
d = GUI_Pow10[Len];
c = (char) (v/d);
v -= c*d;
*(*ps)++ = c+'0';
}
**ps = 0;
}
/////////////////////////////////////////////////////////////////////////
void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len) {
char ac[33];
char* s = ac;
GUI_AddBin(v, Len, &s);
Disp_String(ac, x, y);
}
void GUI_AddBin(U32 v, U8 Len, char**ps)
{
char *s = *ps;
(*ps) += Len;
**ps = '\0'; /* Make sure string is 0-terminated */
while(Len--) {
*(s+Len) = (char)('0'+ (v&1));
v>>=1;
}
}
//////////////////////////////////////////////////////////////////////
void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len) {
char ac[9];
char* s = ac;
GUI_AddHex(v, Len, &s);
Disp_String(ac, x, y);
}
static const char acHex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
void GUI_AddHex(U32 v, U8 Len, char**ps) {
char *s = *ps;
if (Len > 8)
return;
(*ps) += Len;
**ps = '\0'; /* Make sure string is 0-terminated */
while(Len--) {
*(s+Len) = acHex[v&15];
v>>=4;
}
}
//////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -