📄 hextolfp.c
字号:
/* * hextolfp - convert an ascii hex string to an l_fp number */#include <stdio.h>#include <ctype.h>#include "ntp_fp.h"#include "ntp_string.h"#include "ntp_stdlib.h"inthextolfp( const char *str, l_fp *lfp ){ register const char *cp; register const char *cpstart; register u_long dec_i; register u_long dec_f; char *ind = NULL; static const char *digits = "0123456789abcdefABCDEF"; dec_i = dec_f = 0; cp = str; /* * We understand numbers of the form: * * [spaces]8_hex_digits[.]8_hex_digits[spaces|\n|\0] */ while (isspace((int)*cp)) cp++; cpstart = cp; while (*cp != '\0' && (cp - cpstart) < 8 && (ind = strchr(digits, *cp)) != NULL) { dec_i = dec_i << 4; /* multiply by 16 */ dec_i += ((ind - digits) > 15) ? (ind - digits) - 6 : (ind - digits); cp++; } if ((cp - cpstart) < 8 || ind == NULL) return 0; if (*cp == '.') cp++; cpstart = cp; while (*cp != '\0' && (cp - cpstart) < 8 && (ind = strchr(digits, *cp)) != NULL) { dec_f = dec_f << 4; /* multiply by 16 */ dec_f += ((ind - digits) > 15) ? (ind - digits) - 6 : (ind - digits); cp++; } if ((cp - cpstart) < 8 || ind == NULL) return 0; if (*cp != '\0' && !isspace((int)*cp)) return 0; lfp->l_ui = dec_i; lfp->l_uf = dec_f; return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -