first commit
This commit is contained in:
907
libraries/zf_common/zf_common_function.c
Normal file
907
libraries/zf_common/zf_common_function.c
Normal file
@@ -0,0 +1,907 @@
|
||||
/*********************************************************************************************************************
|
||||
* CH32V307VCT6 Opensourec Library <20><><EFBFBD><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* CH32V307VCT6 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_common_function
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 <20><>W first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
#include "zf_common_function.h"
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num1 <20><><EFBFBD><EFBFBD>1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num2 <20><><EFBFBD><EFBFBD>2
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> return func_get_greatest_common_divisor(144, 36); // <20><>ȡ 144 <20><> 36 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 func_get_greatest_common_divisor (uint32 num1, uint32 num2)
|
||||
{
|
||||
while(num1 != num2)
|
||||
{
|
||||
if(num1 > num2)
|
||||
{
|
||||
num1 = num1 - num2;
|
||||
}
|
||||
if(num1 < num2)
|
||||
{
|
||||
num2 = num2 - num1;
|
||||
}
|
||||
}
|
||||
return num1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> t <20><>ʱʱ<CAB1><CAB1>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_soft_delay(100);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_soft_delay (volatile long t)
|
||||
{
|
||||
while(t --);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD><CEA7> [-32768,32767]
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> int32 ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> int32 dat = func_str_to_int("-100");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
int32 func_str_to_int (char *str)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint8 sign = 0; // <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD> 0-<2D><><EFBFBD><EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
int32 temp = 0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if('-' == *str) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
{
|
||||
sign = 1; // <20><><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
else if('+' == *str) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
str ++;
|
||||
}
|
||||
|
||||
while(('0' <= *str) && ('9' >= *str)) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
temp = temp * 10 + ((uint8)(*str) - 0x30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
str ++;
|
||||
}
|
||||
|
||||
if(sign)
|
||||
{
|
||||
temp = -temp;
|
||||
}
|
||||
}while(0);
|
||||
return temp;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD><CEA7> [-32768,32767]
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> number <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_int_to_str(data_buffer, -300);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_int_to_str (char *str, int32 number)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint8 data_temp[16]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 bit = 0; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
int32 number_temp = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(0 > number) // <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
*str ++ = '-';
|
||||
number = -number;
|
||||
}
|
||||
else if(0 == number) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD> 0
|
||||
{
|
||||
*str = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
while(0 != number) // ѭ<><D1AD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
||||
{
|
||||
number_temp = number % 10;
|
||||
data_temp[bit ++] = func_abs(number_temp); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
number /= 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ĸ<EFBFBD>λ<EFBFBD><CEBB>
|
||||
}
|
||||
while(0 != bit) // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
*str ++ = (data_temp[bit - 1] + 0x30); // <20><><EFBFBD><EFBFBD><EFBFBD>ִӵ<D6B4><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ȡ<EFBFBD><C8A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
bit --;
|
||||
}
|
||||
}while(0);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD><CEA7> [0,65535]
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><EFBFBD><DEB7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 dat = func_str_to_uint("100");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 func_str_to_uint (char *str)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint32 temp = 0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
while(('0' <= *str) && ('9' >= *str)) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
temp = temp * 10 + ((uint8)(*str) - 0x30); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
str ++;
|
||||
}
|
||||
}while(0);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD><CEA7> [0,65535]
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> number <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_uint_to_str(data_buffer, 300);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_uint_to_str (char *str, uint32 number)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
int8 data_temp[16]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 bit = 0; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(0 == number) // <20><><EFBFBD>Ǹ<EFBFBD> 0
|
||||
{
|
||||
*str = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
while(0 != number) // ѭ<><D1AD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
||||
{
|
||||
data_temp[bit ++] = (number % 10); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
number /= 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ĸ<EFBFBD>λ<EFBFBD><CEBB>
|
||||
}
|
||||
while(0 != bit) // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
*str ++ = (data_temp[bit - 1] + 0x30); // <20><><EFBFBD><EFBFBD><EFBFBD>ִӵ<D6B4><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ȡ<EFBFBD><C8A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
bit --;
|
||||
}
|
||||
}while(0);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ч<EFBFBD>ۼƾ<DBBC><C6BE><EFBFBD>ΪС<CEAA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> float ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> float dat = func_str_to_float("-100.2");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
float func_str_to_float (char *str)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint8 sign = 0; // <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD> 0-<2D><><EFBFBD><EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
float temp = 0.0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float temp_point = 0.0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float point_bit = 1; // С<><D0A1><EFBFBD>ۼƳ<DBBC><C6B3><EFBFBD>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if('-' == *str) // <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
sign = 1; // <20><><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
else if('+' == *str) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
str ++;
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
while(('0' <= *str) && ('9' >= *str)) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
temp = temp * 10 + ((uint8)(*str) - 0x30); // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
if('.' == *str)
|
||||
{
|
||||
str ++;
|
||||
while(('0' <= *str) && ('9' >= *str) && point_bit < 1000000.0) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ҿ<EFBFBD><D2BE>ȿ<EFBFBD><C8BF>ƻ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>λ
|
||||
{
|
||||
temp_point = temp_point * 10 + ((uint8)(*str) - 0x30); // <20><>ȡС<C8A1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
point_bit *= 10; // <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>С<EFBFBD><D0A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
temp_point /= point_bit; // <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>
|
||||
}
|
||||
temp += temp_point; // <20><><EFBFBD><EFBFBD>ֵƴ<D6B5><C6B4>
|
||||
|
||||
if(sign)
|
||||
{
|
||||
temp = -temp;
|
||||
}
|
||||
}while(0);
|
||||
return temp;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> number <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> point_bit С<><D0A1><EFBFBD>㾫<EFBFBD><E3BEAB>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_float_to_str(data_buffer, 3.1415, 2); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data_buffer = "3.14"
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_float_to_str (char *str, float number, uint8 point_bit)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
int data_int = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_float = 0.0; // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_temp[8]; // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_temp_point[6]; // С<><D0A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 bit = point_bit; // ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_int = (int)number; // ֱ<><D6B1>ǿ<EFBFBD><C7BF>ת<EFBFBD><D7AA>Ϊ int
|
||||
if(0 > number) // <20>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
{
|
||||
*str ++ = '-';
|
||||
}
|
||||
else if(0.0 == number) // <20><><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD> 0
|
||||
{
|
||||
*str ++ = '0';
|
||||
*str ++ = '.';
|
||||
*str = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>ȡС<C8A1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
number = number - data_int; // <20><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>
|
||||
while(bit --)
|
||||
{
|
||||
number = number * 10; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>С<EFBFBD><D0A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
data_float = (int)number; // <20><>ȡ<EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
bit = 0;
|
||||
do
|
||||
{
|
||||
data_temp[bit ++] = data_int % 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_int /= 10;
|
||||
}while(0 != data_int);
|
||||
while(0 != bit)
|
||||
{
|
||||
*str ++ = (func_abs(data_temp[bit - 1]) + 0x30); // <20>ٵ<EFBFBD><D9B5><EFBFBD><F2BDABB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵд<D6B5><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
bit --;
|
||||
}
|
||||
|
||||
// С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
if(point_bit != 0)
|
||||
{
|
||||
bit = 0;
|
||||
*str ++ = '.';
|
||||
if(0 == data_float)
|
||||
{
|
||||
*str = '0';
|
||||
}
|
||||
else
|
||||
{
|
||||
while(0 != point_bit) // <20>ж<EFBFBD><D0B6><EFBFBD>Чλ<D0A7><CEBB>
|
||||
{
|
||||
data_temp_point[bit ++] = data_float % 10; // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_float /= 10;
|
||||
point_bit --;
|
||||
}
|
||||
while(0 != bit)
|
||||
{
|
||||
*str ++ = (func_abs(data_temp_point[bit - 1]) + 0x30); // <20>ٵ<EFBFBD><D9B5><EFBFBD><F2BDABB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵд<D6B5><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
bit --;
|
||||
}
|
||||
}
|
||||
}
|
||||
}while(0);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ч<EFBFBD>ۼƾ<DBBC><C6BE><EFBFBD>ΪС<CEAA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> str <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> double ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> double dat = func_str_to_double("-100.2");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
double func_str_to_double (char *str)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint8 sign = 0; // <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD> 0-<2D><><EFBFBD><EFBFBD> 1-<2D><><EFBFBD><EFBFBD>
|
||||
double temp = 0.0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double temp_point = 0.0; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double point_bit = 1; // С<><D0A1><EFBFBD>ۼƳ<DBBC><C6B3><EFBFBD>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if('-' == *str) // <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
sign = 1; // <20><><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
else if('+' == *str) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
str ++;
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
while(('0' <= *str) && ('9' >= *str)) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
temp = temp * 10 + ((uint8)(*str) - 0x30); // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
if('.' == *str)
|
||||
{
|
||||
str ++;
|
||||
while(('0' <= *str) && ('9' >= *str) && point_bit < 1000000000.0) // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ҿ<EFBFBD><D2BE>ȿ<EFBFBD><C8BF>ƻ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>λ
|
||||
{
|
||||
temp_point = temp_point * 10 + ((uint8)(*str) - 0x30); // <20><>ȡС<C8A1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
point_bit *= 10; // <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>С<EFBFBD><D0A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
str ++;
|
||||
}
|
||||
temp_point /= point_bit; // <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>
|
||||
}
|
||||
temp += temp_point; // <20><><EFBFBD><EFBFBD>ֵƴ<D6B5><C6B4>
|
||||
|
||||
if(sign)
|
||||
{
|
||||
temp = -temp;
|
||||
}
|
||||
}while(0);
|
||||
return temp;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> number <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> point_bit С<><D0A1><EFBFBD>㾫<EFBFBD><E3BEAB>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_double_to_str(data_buffer, 3.1415, 2); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data_buffer = "3.14"
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_double_to_str (char *str, double number, uint8 point_bit)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
int data_int = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_float = 0.0; // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_temp[12]; // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
int data_temp_point[9]; // С<><D0A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 bit = point_bit; // ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_int = (int)number; // ֱ<><D6B1>ǿ<EFBFBD><C7BF>ת<EFBFBD><D7AA>Ϊ int
|
||||
if(0 > number) // <20>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>
|
||||
{
|
||||
*str ++ = '-';
|
||||
}
|
||||
else if(0.0 == number) // <20><><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD> 0
|
||||
{
|
||||
*str ++ = '0';
|
||||
*str ++ = '.';
|
||||
*str = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><>ȡС<C8A1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
number = number - data_int; // <20><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>
|
||||
while(bit --)
|
||||
{
|
||||
number = number * 10; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>С<EFBFBD><D0A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
data_float = (int)number; // <20><>ȡ<EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
bit = 0;
|
||||
do
|
||||
{
|
||||
data_temp[bit ++] = data_int % 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_int /= 10;
|
||||
}while(0 != data_int);
|
||||
while(0 != bit)
|
||||
{
|
||||
*str ++ = (func_abs(data_temp[bit - 1]) + 0x30); // <20>ٵ<EFBFBD><D9B5><EFBFBD><F2BDABB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵд<D6B5><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
bit --;
|
||||
}
|
||||
|
||||
// С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
if(point_bit != 0)
|
||||
{
|
||||
bit = 0;
|
||||
*str ++ = '.';
|
||||
if(0 == data_float)
|
||||
*str = '0';
|
||||
else
|
||||
{
|
||||
while(0 != point_bit) // <20>ж<EFBFBD><D0B6><EFBFBD>Чλ<D0A7><CEBB>
|
||||
{
|
||||
data_temp_point[bit ++] = data_float % 10; // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
data_float /= 10;
|
||||
point_bit --;
|
||||
}
|
||||
while(0 != bit)
|
||||
{
|
||||
*str ++ = (func_abs(data_temp_point[bit - 1]) + 0x30); // <20>ٵ<EFBFBD><D9B5><EFBFBD><F2BDABB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵд<D6B5><D0B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
bit --;
|
||||
}
|
||||
}
|
||||
}
|
||||
}while(0);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ַ<EFBFBD><D6B7><EFBFBD>ת Hex
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> str <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><EFBFBD><DEB7><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint32 dat = func_str_to_hex("0x11");
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 func_str_to_hex (char *str)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
uint32 str_len = strlen(str); // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32 result_data = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 temp = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 flag = 0; // <20><>־λ
|
||||
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(flag)
|
||||
{
|
||||
if(('a' <= *str) && ('f' >= *str))
|
||||
{
|
||||
temp = (*str - 87);
|
||||
}
|
||||
else if(('A' <= *str) && ('F' >= *str))
|
||||
{
|
||||
temp = (*str - 55);
|
||||
}
|
||||
else if(('0' <= *str) && ('9' >= *str))
|
||||
{
|
||||
temp = (*str - 48);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
result_data = ((result_data << 4) | (temp & 0x0F));
|
||||
}
|
||||
else
|
||||
{
|
||||
// if(strncmp("0x", str, 2))
|
||||
if((*str == '0') && (*(str + 1) == 'x'))
|
||||
{
|
||||
str ++;
|
||||
flag = 1;
|
||||
}
|
||||
}
|
||||
str ++;
|
||||
}while(str_len --);
|
||||
|
||||
return result_data;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Hex ת<>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str <20>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> number <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> func_hex_to_str(data_buffer, 0x11); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data_buffer = "0x11"
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void func_hex_to_str (char *str, uint32 number)
|
||||
{
|
||||
zf_assert(str != NULL);
|
||||
const char hex_index[16] = {
|
||||
'0', '1', '2', '3',
|
||||
'4', '5', '6', '7',
|
||||
'8', '9', 'A', 'B',
|
||||
'C', 'D', 'E', 'F'};
|
||||
int8 data_temp[12]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8 bit = 0; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
|
||||
*str++ = '0';
|
||||
*str++ = 'x';
|
||||
do
|
||||
{
|
||||
if(NULL == str)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(0 == number) // <20><><EFBFBD>Ǹ<EFBFBD> 0
|
||||
{
|
||||
*str = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
while(0 != number) // ѭ<><D1AD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
||||
{
|
||||
data_temp[bit ++] = (number & 0xF); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
number >>= 4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ĸ<EFBFBD>λ<EFBFBD><CEBB>
|
||||
}
|
||||
while(0 != bit) // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
*str ++ = hex_index[data_temp[bit - 1]]; // <20><><EFBFBD><EFBFBD><EFBFBD>ִӵ<D6B4><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ȡ<EFBFBD><C8A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
bit --;
|
||||
}
|
||||
}while(0);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ ASCII ֵ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *p <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> neg_type <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> radix <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> number_conversion_ascii((uint32)ival, vstr, 1, 10);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 number_conversion_ascii (uint32 dat, int8 *p, uint8 neg_type, uint8 radix)
|
||||
{
|
||||
int32 neg_dat;
|
||||
uint32 pos_dat;
|
||||
uint8 temp_data = 0;
|
||||
uint8 valid_num = 0;
|
||||
|
||||
if(neg_type)
|
||||
{
|
||||
neg_dat = (int32)dat;
|
||||
if(0 > neg_dat)
|
||||
{
|
||||
neg_dat = -neg_dat;
|
||||
}
|
||||
while(1)
|
||||
{
|
||||
*p = neg_dat%radix + '0';
|
||||
neg_dat = neg_dat/radix;
|
||||
valid_num ++;
|
||||
|
||||
if(!neg_dat)
|
||||
{
|
||||
break;
|
||||
}
|
||||
p ++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pos_dat = dat;
|
||||
while(1)
|
||||
{
|
||||
temp_data = pos_dat%radix;
|
||||
if(10 <= temp_data)
|
||||
{
|
||||
temp_data += 'A'-10;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_data += '0';
|
||||
}
|
||||
|
||||
*p = temp_data;
|
||||
|
||||
pos_dat = pos_dat/radix;
|
||||
valid_num ++;
|
||||
|
||||
if(!pos_dat)
|
||||
{
|
||||
break;
|
||||
}
|
||||
p ++;
|
||||
}
|
||||
}
|
||||
return valid_num;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> printf <20><>ʾת<CABE><D7AA>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *d_buff <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> printf_reverse_order(vstr, vlen);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void printf_reverse_order (int8 *d_buff, uint32 len)
|
||||
{
|
||||
uint32 i;
|
||||
int8 temp_data;
|
||||
for(i = 0; len / 2 > i; i ++)
|
||||
{
|
||||
temp_data = d_buff[len - 1 - i];
|
||||
d_buff[len - 1 -i ] = d_buff[i];
|
||||
d_buff[i] = temp_data;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sprintf <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *format Դ<>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ... <20>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> zf_sprintf(buff, "Data : %d", 100);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ù<EFBFBD>ע Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint32 zf_sprintf (int8 *buff, const int8 *format, ...)
|
||||
{
|
||||
uint32 buff_len = 0;
|
||||
va_list arg;
|
||||
va_start(arg, format);
|
||||
|
||||
while (*format)
|
||||
{
|
||||
int8 ret = *format;
|
||||
if ('%' == ret)
|
||||
{
|
||||
switch (*++ format)
|
||||
{
|
||||
case 'a':// ʮ<><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>δʵ<CEB4><CAB5>
|
||||
{
|
||||
}
|
||||
break;
|
||||
|
||||
case 'c':// һ<><D2BB><EFBFBD>ַ<EFBFBD>
|
||||
{
|
||||
int8 ch = (int8)va_arg(arg, uint32);
|
||||
*buff = ch;
|
||||
buff ++;
|
||||
buff_len ++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
case 'i':// <20>з<EFBFBD><D0B7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int8 vstr[33];
|
||||
int32 ival = (int32)va_arg(arg, int32);
|
||||
uint8 vlen = number_conversion_ascii((uint32)ival, vstr, 1, 10);
|
||||
|
||||
if(0 > ival)
|
||||
{
|
||||
vstr[vlen] = '-';
|
||||
vlen ++;
|
||||
}
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'f':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case 'F':// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int8 vstr[33];
|
||||
double ival = (double)va_arg(arg, double);
|
||||
uint8 vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
|
||||
|
||||
if(0 > ival)
|
||||
{
|
||||
vstr[vlen] = '-';
|
||||
vlen ++;
|
||||
}
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
|
||||
ival = ((double)ival - (int32)ival)*1000000;
|
||||
if(ival)
|
||||
{
|
||||
vlen = number_conversion_ascii((uint32)(int32)ival, vstr, 1, 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
vstr[0] = vstr[1] = vstr[2] = vstr[3] = vstr[4] = vstr[5] = '0';
|
||||
vlen = 6;
|
||||
}
|
||||
|
||||
while(6 > vlen)
|
||||
{
|
||||
vstr[vlen] = '0';
|
||||
vlen ++;
|
||||
}
|
||||
|
||||
vstr[vlen] = '.';
|
||||
vlen ++;
|
||||
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':// <20><EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int8 vstr[33];
|
||||
uint32 ival = (uint32)va_arg(arg, uint32);
|
||||
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 10);
|
||||
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'o':// <20><EFBFBD><DEB7>Ű˽<C5B0><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int8 vstr[33];
|
||||
uint32 ival = (uint32)va_arg(arg, uint32);
|
||||
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 8);
|
||||
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 'x':// <20><EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case 'X':// <20><EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int8 vstr[33];
|
||||
uint32 ival = (uint32)va_arg(arg, uint32);
|
||||
uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
|
||||
|
||||
printf_reverse_order(vstr, vlen);
|
||||
memcpy(buff, vstr, vlen);
|
||||
buff += vlen;
|
||||
buff_len += vlen;
|
||||
}
|
||||
break;
|
||||
|
||||
case 's':// <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
{
|
||||
int8 *pc = va_arg(arg, int8 *);
|
||||
while (*pc)
|
||||
{
|
||||
*buff = *pc;
|
||||
buff ++;
|
||||
buff_len ++;
|
||||
pc ++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'p':// <20><>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
{
|
||||
int8 vstr[33];
|
||||
uint32 ival = (uint32)va_arg(arg, uint32);
|
||||
//uint8 vlen = number_conversion_ascii(ival, vstr, 0, 16);
|
||||
number_conversion_ascii(ival, vstr, 0, 16);
|
||||
printf_reverse_order(vstr, 8);
|
||||
memcpy(buff, vstr, 8);
|
||||
buff += 8;
|
||||
buff_len += 8;
|
||||
}
|
||||
break;
|
||||
|
||||
case '%':// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>%
|
||||
{
|
||||
*buff = '%';
|
||||
buff ++;
|
||||
buff_len ++;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*buff = (int8)(*format);
|
||||
buff ++;
|
||||
buff_len ++;
|
||||
}
|
||||
format ++;
|
||||
}
|
||||
va_end(arg);
|
||||
|
||||
return buff_len;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user