}
/* nが-32768〜32767の範囲にないときは、その下位16ビットを格納 */
if(n < -32768 || n > 32767) {
- n = n % 0x10000;
+ n = n & 0xFFFF;
}
return (WORD)n;
}
WORD h2word(const char *str)
{
assert(*str == '#');
- WORD w = 0x0;
+ WORD word = 0x0;
char *check;
str++;
if(*str == '-' || strlen(str) > 4) {
return 0;
}
/* WORD値に変換 */
- w = (WORD)strtol(str, &check, 16);
+ word = (WORD)strtol(str, &check, 16);
if(*check != '\0') {
setcerr(115, str-1); /* not hex */
return 0x0;
}
- return w;
+ return word;
}
/* 10進数または16進数の文字列をWORD値に変換 */
-WORD a2word(const char *str)
+WORD nh2word(const char *str)
{
- WORD word = 0x0;
+ WORD word;
+ if(!isdigit(*str) && *str != '-' && *str != '#') {
+ setcerr(114, str); /* not integer */
+ return 0x0;
+ }
if(*str == '#') {
word = h2word(str);
- } else if(isdigit(*str) || *str == '-') {
+ } else {
word = n2word(str);
}
return word;