📄 rand.c
字号:
/*************************************************************************** * rand.c * * Mon May 21 18:00:48 2007 * Copyright 2007 kf701 * Email <kf701.ye AT gmail.com> ****************************************************************************//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "kf701.h"#include <time.h>static bool rand_init_flag = false;static void rand_init(void){ srandom( time(NULL) + getpid() ); rand_init_flag = true;}int32_t rand_int32_area(int32_t min, int32_t max){ if( false == rand_init_flag ) rand_init(); int32_t i = max - min + 1; int32_t r = random(); return ( r % i ) + min;}uint8_t rand_digit(void){ return (uint8_t)rand_int32_area(0, 9);}uint8_t rand_alpha_lower(void){ return (uint8_t)rand_int32_area(97, 122);}uint8_t rand_alpha_upper(void){ return (uint8_t)rand_int32_area(65, 90);}uint8_t *rand_string(uint8_t *buf, uint32_t size){ int i; for( i=0; i<size; i++ ) buf[i] = (uint8_t)rand_int32_area(1, 255); buf[ size - 1 ] = 0; return buf;}uint8_t *rand_bytes(uint8_t *buf, uint32_t size){ int i; for( i=0; i<size; i++ ) buf[i] = (uint8_t)rand_int32_area(0, 255); return buf;}uint32_t rand_int32_from_str(const char *str){ const char *p = str; uint32_t h = *p; if (h) for (p += 1; *p != '\0'; p++) h = (h << 5) - h + *p; return h;}char *rand_ip(char *buffer, uint32_t size){ char p[16]; sprintf( p, "%u.%u.%u.%u", rand_int32_area(0,255),rand_int32_area(0,255), rand_int32_area(0,255), rand_int32_area(0,255) ); if( strlen(p) > size ) return NULL; else strcpy(buffer, p); return buffer;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -