Math Processor Unit Library

libmpu – library of arithmetic functions for integer, real, and complex numbers of increased digit capacity

16 Commits   0 Branches   2 Tags
41c271da (kx 2025-01-05 15:42:39 +0300   1) .TH iatoi 3  "December 27, 2024" "libmpu" "LibMPU Programmer's Manual"
41c271da (kx 2025-01-05 15:42:39 +0300   2) .SH NAME
41c271da (kx 2025-01-05 15:42:39 +0300   3) \fBiatoi\fP, \fBiatoui\fP \- функции перевода ASCII строки в целое число
41c271da (kx 2025-01-05 15:42:39 +0300   4) .SH SYNOPSIS
41c271da (kx 2025-01-05 15:42:39 +0300   5) .nf
41c271da (kx 2025-01-05 15:42:39 +0300   6) .B #include <libmpu.h>
41c271da (kx 2025-01-05 15:42:39 +0300   7) .PP
41c271da (kx 2025-01-05 15:42:39 +0300   8) .BI "void iatoi( mpu_int *" c ", __mpu_char8_t *" str ", int " nb " );
41c271da (kx 2025-01-05 15:42:39 +0300   9) .BI "void iatoui( mpu_int *" c ", __mpu_char8_t *" str ", int " nb " );
41c271da (kx 2025-01-05 15:42:39 +0300  10) .fi
41c271da (kx 2025-01-05 15:42:39 +0300  11) .SH DESCRIPTION
41c271da (kx 2025-01-05 15:42:39 +0300  12) Функции \fBiatoi()\fP, \fBiatoui()\fP предназначены для приведения (конвертации) ASCII\-строки в числовой вид.
41c271da (kx 2025-01-05 15:42:39 +0300  13) В случае функции \fBiatoi()\fP арумент \fBstr\fP рассматривается как указатель на массив символов, содержащий
41c271da (kx 2025-01-05 15:42:39 +0300  14) символы знакового целого числа, в случае \fBiatoui()\fP подразумевается, что строка содержит представление
41c271da (kx 2025-01-05 15:42:39 +0300  15) беззнаковой числовой константы целого типа.
41c271da (kx 2025-01-05 15:42:39 +0300  16) .PP
41c271da (kx 2025-01-05 15:42:39 +0300  17) Числовые константы в строке могут быть представлены как двоичные, восьмеричные, шестнадцатеричные и десятичные
41c271da (kx 2025-01-05 15:42:39 +0300  18) числа. Двоичные числа начинаются с префикса \fB0b\fP или \fB0B\fP, например, \fB0b1011\fP. Восьмеричные числа
41c271da (kx 2025-01-05 15:42:39 +0300  19) должны начинаться с символа '0' и содержать цифры от '0' до '7'. Шестнацатеричные константы начинаются с префикса
41c271da (kx 2025-01-05 15:42:39 +0300  20) \fB0x\fP или \fB0X\fP и могут содержать символы от '0' до '7', а также символы от 'a' до 'f' в любом регистре.
41c271da (kx 2025-01-05 15:42:39 +0300  21) Десятичные константы могут содержать символы от '0' до '9', но не должны начинаться символом '0'. Перед числом
41c271da (kx 2025-01-05 15:42:39 +0300  22) допускаются знаки '+', '-'. Если в строке представлена двоичная, восьмеричная или шестнадцатеричная константа,
41c271da (kx 2025-01-05 15:42:39 +0300  23) то знак игнорируется.
41c271da (kx 2025-01-05 15:42:39 +0300  24) .PP
41c271da (kx 2025-01-05 15:42:39 +0300  25) Результат размещается по адресу \fBc\fP, а параметр \fBnb\fP представляет размер результата \fBc\fP в байтах.
41c271da (kx 2025-01-05 15:42:39 +0300  26) .PP
41c271da (kx 2025-01-05 15:42:39 +0300  27) Если число, представленное в строке \fBstr\fP, не умещается в заданный (\fBnb\fP) формат, то выставляется
41c271da (kx 2025-01-05 15:42:39 +0300  28) флаг переполнения (\fBO\fP).
41c271da (kx 2025-01-05 15:42:39 +0300  29) .PP
41c271da (kx 2025-01-05 15:42:39 +0300  30) Функция воздействует на флаги \fBA\fP, \fBC\fP, \fBO\fP, \fBP\fP, \fBS\fP, \fBZ\fP. Флаги \fBA\fP, \fBC\fP
41c271da (kx 2025-01-05 15:42:39 +0300  31) сбрасываются в 0. Флаг \fBR\fP не изменяется.
41c271da (kx 2025-01-05 15:42:39 +0300  32) .sp
41c271da (kx 2025-01-05 15:42:39 +0300  33) .SH EXAMPLES
41c271da (kx 2025-01-05 15:42:39 +0300  34) .nf
41c271da (kx 2025-01-05 15:42:39 +0300  35) .sp
41c271da (kx 2025-01-05 15:42:39 +0300  36) #include <libmpu.h>
41c271da (kx 2025-01-05 15:42:39 +0300  37) #include <stdio.h>
41c271da (kx 2025-01-05 15:42:39 +0300  38) 
41c271da (kx 2025-01-05 15:42:39 +0300  39) int main( void )
41c271da (kx 2025-01-05 15:42:39 +0300  40) {
41c271da (kx 2025-01-05 15:42:39 +0300  41)   int  rc = 0;
41c271da (kx 2025-01-05 15:42:39 +0300  42) 
41c271da (kx 2025-01-05 15:42:39 +0300  43)   __mpu_init();
41c271da (kx 2025-01-05 15:42:39 +0300  44)   __mpu_extra_warnings = 1;
41c271da (kx 2025-01-05 15:42:39 +0300  45) 
41c271da (kx 2025-01-05 15:42:39 +0300  46)   {
41c271da (kx 2025-01-05 15:42:39 +0300  47)     mpu_int16_t    a, b;
41c271da (kx 2025-01-05 15:42:39 +0300  48)     int            nb = NB_I16;
41c271da (kx 2025-01-05 15:42:39 +0300  49)     __mpu_char8_t  s[32];
41c271da (kx 2025-01-05 15:42:39 +0300  50) 
41c271da (kx 2025-01-05 15:42:39 +0300  51)     iatoui( a, "0b11", nb ); /* evaluate the A variable */
41c271da (kx 2025-01-05 15:42:39 +0300  52)     iatoi( b,  "-3", nb );   /* evaluate the B variable */
41c271da (kx 2025-01-05 15:42:39 +0300  53) 
41c271da (kx 2025-01-05 15:42:39 +0300  54)     iitoa( s, a, RADIX_DEC, LOWERCASE, nb ); /* convert A value to ASCII string S */
41c271da (kx 2025-01-05 15:42:39 +0300  55)     printf( "a = %s;\\n", s ); /* a = 3; */
41c271da (kx 2025-01-05 15:42:39 +0300  56) 
41c271da (kx 2025-01-05 15:42:39 +0300  57)     iitoa( s, b, RADIX_BIN, LOWERCASE, nb ); /* convert B value to ASCII string S */
41c271da (kx 2025-01-05 15:42:39 +0300  58)     printf( "b = %s;\\n", s ); /* b = 0b1111111111111101; */
41c271da (kx 2025-01-05 15:42:39 +0300  59)   }
41c271da (kx 2025-01-05 15:42:39 +0300  60) 
41c271da (kx 2025-01-05 15:42:39 +0300  61)   __mpu_free_context();
41c271da (kx 2025-01-05 15:42:39 +0300  62) 
41c271da (kx 2025-01-05 15:42:39 +0300  63)   return( rc );
41c271da (kx 2025-01-05 15:42:39 +0300  64) }
41c271da (kx 2025-01-05 15:42:39 +0300  65) .fi
41c271da (kx 2025-01-05 15:42:39 +0300  66) .SH SEE ALSO
41c271da (kx 2025-01-05 15:42:39 +0300  67) .BR iadd(3),
41c271da (kx 2025-01-05 15:42:39 +0300  68) .BR isub(3),
41c271da (kx 2025-01-05 15:42:39 +0300  69) .BR iadc(3),
41c271da (kx 2025-01-05 15:42:39 +0300  70) .BR isbb(3),
41c271da (kx 2025-01-05 15:42:39 +0300  71) .BR ishl(3),
41c271da (kx 2025-01-05 15:42:39 +0300  72) .BR ishr(3),
41c271da (kx 2025-01-05 15:42:39 +0300  73) .BR isal(3),
41c271da (kx 2025-01-05 15:42:39 +0300  74) .BR isar(3),
41c271da (kx 2025-01-05 15:42:39 +0300  75) .BR irol(3),
41c271da (kx 2025-01-05 15:42:39 +0300  76) .BR iror(3),
41c271da (kx 2025-01-05 15:42:39 +0300  77) .BR ircl(3),
41c271da (kx 2025-01-05 15:42:39 +0300  78) .BR ircr(3),
41c271da (kx 2025-01-05 15:42:39 +0300  79) .BR ishln(3),
41c271da (kx 2025-01-05 15:42:39 +0300  80) .BR ishrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300  81) .BR isaln(3),
41c271da (kx 2025-01-05 15:42:39 +0300  82) .BR isarn(3),
41c271da (kx 2025-01-05 15:42:39 +0300  83) .BR iroln(3),
41c271da (kx 2025-01-05 15:42:39 +0300  84) .BR irorn(3),
41c271da (kx 2025-01-05 15:42:39 +0300  85) .BR ircln(3),
41c271da (kx 2025-01-05 15:42:39 +0300  86) .BR ircrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300  87) .BR ineg(3),
41c271da (kx 2025-01-05 15:42:39 +0300  88) .BR inot(3),
41c271da (kx 2025-01-05 15:42:39 +0300  89) .BR iand(3),
41c271da (kx 2025-01-05 15:42:39 +0300  90) .BR itest(3),
41c271da (kx 2025-01-05 15:42:39 +0300  91) .BR icmp(3),
41c271da (kx 2025-01-05 15:42:39 +0300  92) .BR ior(3),
41c271da (kx 2025-01-05 15:42:39 +0300  93) .BR ixor(3),
41c271da (kx 2025-01-05 15:42:39 +0300  94) .BR iinc(3),
41c271da (kx 2025-01-05 15:42:39 +0300  95) .BR idec(3),
41c271da (kx 2025-01-05 15:42:39 +0300  96) .BR ixchg(3),
41c271da (kx 2025-01-05 15:42:39 +0300  97) .BR icpy(3),
41c271da (kx 2025-01-05 15:42:39 +0300  98) .BR icvt(3),
41c271da (kx 2025-01-05 15:42:39 +0300  99) .BR imul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 100) .BR ismul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 101) .BR idiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 102) .BR isdiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 103) .BR iitoa(3),
41c271da (kx 2025-01-05 15:42:39 +0300 104) .BR iuitoa(3).