亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? strtools.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號(hào):
/* *	HT Editor *	strtools.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf (stefan@weyergraf.de) *	Copyright (C) 1999-2003 Sebastian Biallas (sb@biallas.net) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	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., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "atom.h"#include "htdebug.h"#include "except.h"#include "snprintf.h"#include "stream.h"#include "strtools.h"#include "tools.h"#include "io/types.h"#include <cctype>#include <cstdarg>#include <cstdlib>#include <cstring>char hexchars[17]="0123456789abcdef";char *ht_strdup(const char *str){	if (str) {		int len = strlen(str)+1;		char *s = ht_malloc(len);		memcpy(s, str, len);		return s;	} else {		return NULL;	}}/** *	Like ht_strdup but dups a maximum of |maxlen| characters of |str|. *	@returns new string */char *ht_strndup(const char *str, size_t maxlen){	maxlen ++;	if (str) {		uint len = strlen(str)+1;		len = MIN(len, maxlen);		char *s = ht_malloc(len);		memcpy(s, str, len);		s[len-1] = 0;		return s;	} else {		return NULL;	}}/** *	Like strcpy but copies a maximum of |maxlen| characters *	(including trailing zero). *	The operation is performed in a way that the trailing zero *	is always written if maxlen is > 0. *	@returns number of characters copied (without trailing zero) */size_t ht_strlcpy(char *s1, const char *s2, size_t maxlen){	if (!maxlen) return 0;	char *os1 = s1;	while (true) {		if (!--maxlen) {			*s1 = 0;			return s1 - os1;		}		*s1 = *s2;		if (!*s2) return s1 - os1;		s1++; s2++;	}}size_t ht_strlcat(char *s1, const char *s2, size_t maxlen){	char *os1 = s1;	while (maxlen && *s1) {		maxlen--;		s1++;	}	if (!maxlen) return os1-s1;	while (true) {		if (!--maxlen) {			*s1 = 0;			return s1 - os1;		}		*s1 = *s2;		if (!*s2) return s1 - os1;		s1++; s2++;	}}int ht_strncmp(const char *s1, const char *s2, size_t max){	if (!s1) return s2 ? -1 : 0;	if (!s2) return s1 ? 1 : 0;	while (max--) {		if (!*s1) return *s2 ? -1 : 0;		if (!*s2) return *s1 ? 1 : 0;		if (*s1>*s2) {			return 1;		} else if (*s1<*s2) {			return -1;		}		s1++;s2++;	}	return 0;}int ht_strnicmp(const char *s1, const char *s2, size_t max){	if (!s1) return s2 ? -1 : 0;	if (!s2) return s1 ? 1 : 0;	while (max--) {		if (!*s1) return *s2 ? -1 : 0;		if (!*s2) return *s1 ? 1 : 0;		char c1=tolower(*s1), c2=tolower(*s2);		if (c1>c2) {			return 1;		} else if (c1<c2) {			return -1;		}		s1++;s2++;	}	return 0;}int ht_stricmp(const char *s1, const char *s2){	if (!s1) return s2 ? -1 : 0;	if (!s2) return s1 ? 1 : 0;	while (1) {		if (!*s1) return *s2 ? -1 : 0;		if (!*s2) return *s1 ? 1 : 0;		char c1 = tolower(*s1), c2 = tolower(*s2);		if (c1 > c2) {			return 1;		} else if (c1 < c2) {			return -1;		}		s1++; s2++;	}}size_t ht_strccomm(const char *s1, const char *s2){	if (!s1 || !s2) return 0;	int r=0;	while (*s1 && *s2 && *s1 == *s2) { s1++; s2++; r++; }	return r;}size_t ht_strcicomm(const char *s1, const char *s2){	if (!s1 || !s2) return 0;	int r=0;	while (*s1 && *s2 && tolower(*s1) == tolower(*s2)) { s1++; s2++; r++; }	return r;}int escape_special_str(char *result, int resultmaxlen, const char *s, const char *specialchars, bool bit7){	return escape_special(result, resultmaxlen, s, strlen(s), specialchars, bit7);}int escape_special(char *result, int resultmaxlen, const void *S, int len, const char *specialchars, bool bit7){	byte *s = (byte*)S;	if (!s) return 0;	if (resultmaxlen <= 0) return 0;	char *old = result;	if (!specialchars) specialchars="";	while (len--) {		if (*s && strchr(specialchars, *s)) {			*result++ = '\\';			if (--resultmaxlen<2) break;			*result++ = *s;			if (--resultmaxlen<2) break;		} else if (*s < 32 || (bit7 && (*s > 0x7f)) || *s=='\\') {			*result++ = '\\';			if (--resultmaxlen<2) break;			switch (*s) {				case '\0':					*result++='0';					break;				case '\a':					*result++='a';					break;				case '\b':					*result++='b';					break;				case '\e':					*result++='e';					break;				case '\f':					*result++='f';					break;				case '\n':					*result++='n';					break;				case '\r':					*result++='r';					break;				case '\t':					*result++='t';					break;				case '\v':					*result++='v';					break;				case '\\':					*result++='\\';					break;				case '\"':					*result++='"';					break;				default:					*result++='x';					if (--resultmaxlen<2) break;					*result++=hexchars[((*s & 0xf0) >> 4)];					if (--resultmaxlen<2) break;					*result++=hexchars[(*s & 0x0f)];			}			if (--resultmaxlen < 2) break;		} else {			*result++ = *s;			if (--resultmaxlen < 2) break;		}		s++;	}	*result = 0;	return result-old;}int unescape_special_str(char *result, int resultmaxlen, const char *s){	int l=unescape_special(result, resultmaxlen-1, s);	result[l]=0;	return l;}int unescape_special(void *Result, int resultmaxlen, const char *s){	char *result = (char*)Result;	char *old = result;	while (s && *s) {		if (*s == '\\') {			s++;			switch (*s) {			case '0':				*result++='\0';				break;			case 'a':				*result++='\a';				break;			case 'b':				*result++='\b';				break;			case 'e':				*result++='\e';				break;			case 'f':				*result++='\f';				break;			case 'n':				*result++='\n';				break;			case 'r':				*result++='\r';				break;			case 't':				*result++='\t';				break;			case 'v':				*result++='\v';				break;			case '\\':				*result++='\\';				break;			case '\"':				*result++='"';				break;			case 'x':				s++;				byte v = hexdigit(*s) * 16;				s++;				v += hexdigit(*s);				*result++ = (char)v;			}			if (!--resultmaxlen) break;		} else {			*result++ = *s;			if (!--resultmaxlen) break;		}		s++;	}	return result-old;}int bin2str(char *result, const void *S, int len){	byte *s = (byte*)S;	while (len--) {//		if (*s<32) *result=' '; else *result=*s;		if (*s==0) *result=' '; else *result=*s;		result++;		s++;	}	*result=0;	return len;}void wide_char_to_multi_byte(char *result, const byte *Unicode, int maxlen){	if (!maxlen) return;	struct doof {		char c1;		char c2;	};	doof *unicode = (doof*)Unicode;	for (int i=0; i < maxlen - 1; i++) {		if (unicode->c2) {			*result++ = 0xff;		} else {			if (!unicode->c1) break;			*result++ = unicode->c1;		}		unicode++;	}	*result=0;}void memdowncase(byte *buf, int len){	for (int i=0; i < len; i++) {		if (buf[i] >= 'A' && buf[i] <= 'Z') buf[i] += 32;	}}byte *ht_memmem(const byte *haystack, int haystack_len, const byte *needle, int needle_len){	while (haystack_len && haystack_len >= needle_len) {		if (memcmp(haystack, needle, needle_len) == 0) return (byte*)haystack;		haystack++;		haystack_len--;	}	return NULL;}/* common string parsing functions */bool is_whitespace(char c){	return c && (unsigned char)c <= 32;}void whitespaces(const char *&str){	while ((unsigned char)*str <= 32) {		if (!*str) return;		str++;	}}void non_whitespaces(const char *&str){	while ((unsigned char)*str > 32) {		str++;	}}bool waitforchar(const char *&str, char b){	while (*str != b) {		if (!*str) return false;		str++;	}	return true;}static bool bnstr2bin(uint64 &u64, const char *&str, int base){	u64 = 0;	uint64 ubase = base;	int i = 0;	do {		int c = hexdigit(*str);		if (c == -1 || c >= base) return (i == 0) ? false : true;		u64 *= ubase;		u64 += c;		str++;		i++;	} while (*str);	return true;}bool parseIntStr(const char *&str, uint64 &u64, int defaultbase){	int base = defaultbase;	if (base == 10 && ht_strnicmp("0x", str, 2) == 0) {		str += 2;		base = 16;	}	return bnstr2bin(u64, str, base);}bool parseIntStr(char *&str, uint64 &u64, int defaultbase){	int base = defaultbase;	if (base == 10 && ht_strnicmp("0x", str, 2) == 0) {		str += 2;		base = 16;	}	return bnstr2bin(u64, (const char *&)str, base);}bool str2int(const char *str, uint64 &u64, int defaultbase){	uint base = defaultbase;	size_t len = strlen(str);	if (!len) return false;	bool n = false;	if (defaultbase == 10) {		if (ht_strnicmp("0x", str, 2) == 0) {			str += 2;			base = 16;			len -= 2;			if (!len) return false;		} else {			switch (tolower(str[len-1])) {			case 'b': base = 2; break;			case 'o': base = 8; break;			case 'h': base = 16; break;			default: goto skip;			}				len--;				if (!len) return false;			skip:			if (str[0] == '-') {				str++; len--;				if (!len) return false;				n = true;			}		}	}	u64 = 0;	do {		int c = hexdigit(str[0]);		if (c == -1 || c >= int(base)) return false;		u64 *= base;		u64 += c;		str++;	} while (--len);	if (n) u64 = -u64;	return true;}/* hex/string functions */int hexdigit(char a){	if (a >= '0' && a <= '9') {		return a-'0';	} else if (a >= 'a' && a <= 'f') {		return a-'a'+10;	} else if (a >= 'A' && a <= 'F') {		return a-'A'+10;	}	return -1;}bool hexb_ex(uint8 &result, const char *s){	int v, w;	v = hexdigit(s[0]);	w = hexdigit(s[1]);	if ((v < 0) || (w < 0)) return false;	result = (v<<4) | w;	return true;}bool hexw_ex(uint16 &result, const char *s){	uint8 v, w;	if (!hexb_ex(v, s) || !hexb_ex(w, s+2)) return false;	result = (v<<8) | w;	return true;}bool hexd_ex(uint32 &result, const char *s){	uint16 v, w;	if (!hexw_ex(v, s) || !hexw_ex(w, s+4)) return false;	result = (v<<16) | w;	return true;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜电影网| 国产精品美女久久久久久久久久久| 在线观看国产精品网站| 成人不卡免费av| 不卡的av电影| 91亚洲精品乱码久久久久久蜜桃| 99精品一区二区三区| 91尤物视频在线观看| 色偷偷88欧美精品久久久| 91蜜桃在线观看| 欧美色网一区二区| 欧美夫妻性生活| 日韩精品一区二区三区蜜臀| 日韩精品中文字幕一区| 久久久99久久| 中文字幕一区二区三区视频| 亚洲美女视频在线| 午夜精品爽啪视频| 麻豆国产精品视频| 国产成人免费9x9x人网站视频| 成人性视频免费网站| 色综合久久久网| 91精品国产欧美一区二区18| 精品国产一区二区三区忘忧草| 国产日产欧产精品推荐色| 中文字幕在线不卡国产视频| 亚洲综合激情另类小说区| 视频在线观看国产精品| 黑人巨大精品欧美一区| 成人av电影免费在线播放| 色激情天天射综合网| 777午夜精品视频在线播放| 2021久久国产精品不只是精品| 国产精品色在线观看| 亚洲一区二区三区小说| 激情综合亚洲精品| 91在线一区二区三区| 欧美精品视频www在线观看| 久久看人人爽人人| 亚洲综合小说图片| 国产综合久久久久久鬼色| 99久久久免费精品国产一区二区| 欧美视频在线一区| 久久亚洲精华国产精华液| 亚洲精品你懂的| 精品一区二区免费在线观看| 99久久99久久免费精品蜜臀| 欧美一卡二卡在线| 中文字幕在线免费不卡| 日韩精品91亚洲二区在线观看| 国产风韵犹存在线视精品| 欧美影院一区二区| 国产女人aaa级久久久级| 亚洲在线成人精品| 国产91富婆露脸刺激对白 | 91精品欧美一区二区三区综合在 | 中文字幕在线不卡一区二区三区| 亚洲成人av福利| 成人高清视频免费观看| 日韩一区二区三区视频| 亚洲免费观看高清| 国产精品影视天天线| 欧美日韩视频一区二区| 日本一二三不卡| 久久av中文字幕片| 精品视频在线看| 中文字幕av资源一区| 精一区二区三区| 欧美日韩免费不卡视频一区二区三区 | 欧美吞精做爰啪啪高潮| 欧美国产一区二区| 久久99国产精品久久99果冻传媒| 欧美亚洲国产一区二区三区 | 亚洲va欧美va人人爽午夜| 成人激情黄色小说| 久久久亚洲精品一区二区三区| 亚洲二区在线视频| 色先锋资源久久综合| 国产精品理论在线观看| 国产乱对白刺激视频不卡| 日韩三级免费观看| 丝袜美腿一区二区三区| 欧美在线观看一二区| 国产精品成人在线观看| 国产999精品久久久久久绿帽| 日韩亚洲欧美在线| 亚洲成人综合视频| 欧美日韩视频第一区| 亚洲综合久久久| 色狠狠桃花综合| 成人欧美一区二区三区白人| 丁香五精品蜜臀久久久久99网站| 精品国产乱码久久久久久闺蜜| 日本在线不卡一区| 欧美日韩久久久久久| 亚洲一区在线观看免费| 在线观看www91| 一区二区三区在线不卡| 色丁香久综合在线久综合在线观看| 中文字幕精品一区二区精品绿巨人| 国产专区欧美精品| 久久久久久日产精品| 国产乱对白刺激视频不卡| 久久久青草青青国产亚洲免观| 国产综合久久久久久久久久久久| 2024国产精品| 国产成人精品三级麻豆| 国产精品青草久久| 91视频免费看| 亚洲影院在线观看| 欧美日韩成人综合天天影院| 丝袜脚交一区二区| 日韩小视频在线观看专区| 久久99精品久久久久婷婷| 久久综合久久久久88| 国产99精品在线观看| 日韩毛片高清在线播放| 91久久精品一区二区二区| 亚洲国产精品精华液网站| 宅男噜噜噜66一区二区66| 久久国产精品色婷婷| 久久久五月婷婷| 91尤物视频在线观看| 亚洲mv大片欧洲mv大片精品| 欧美一区2区视频在线观看| 国精品**一区二区三区在线蜜桃| 国产精品婷婷午夜在线观看| 色综合天天综合色综合av | 国产一区亚洲一区| 国产精品嫩草影院com| 色系网站成人免费| 婷婷综合五月天| 久久综合成人精品亚洲另类欧美| 成人av电影免费在线播放| 亚洲一区二区三区在线播放| 日韩一卡二卡三卡四卡| 成人午夜视频在线| 亚洲一区二区不卡免费| 欧美一二三区在线观看| 成人午夜视频在线| 爽好久久久欧美精品| 久久久影视传媒| 欧美性生交片4| 狠狠色丁香久久婷婷综| 亚洲精品综合在线| 欧美成人video| 色婷婷av一区二区| 精品亚洲porn| 亚洲精品免费播放| xnxx国产精品| 欧美在线免费观看亚洲| 国产一区二区三区观看| 亚洲一区二区三区在线| 久久精品亚洲麻豆av一区二区| 在线观看网站黄不卡| 国产激情视频一区二区三区欧美| 一二三区精品福利视频| 久久久久久久久99精品| 欧美老女人在线| 99久久婷婷国产| 国产在线精品一区二区三区不卡| 亚洲美女免费视频| 久久久久久一二三区| 欧美日韩国产精品自在自线| 成人一区二区在线观看| 蜜桃久久精品一区二区| 一二三四区精品视频| 国产精品人成在线观看免费 | 亚洲裸体xxx| 久久中文字幕电影| 欧美日韩和欧美的一区二区| 成人涩涩免费视频| 美女视频一区二区三区| 亚洲一区二区三区不卡国产欧美 | 成人av在线电影| 久久国产尿小便嘘嘘尿| 夜夜嗨av一区二区三区中文字幕| 亚洲国产成人午夜在线一区| 欧美v亚洲v综合ⅴ国产v| 欧美日韩一区高清| 在线国产电影不卡| 99久久精品国产一区二区三区| 国产精品亚洲一区二区三区妖精| 免费人成在线不卡| 婷婷久久综合九色综合绿巨人 | 国产一区高清在线| 日韩高清在线观看| 亚洲国产日韩a在线播放性色| 自拍偷拍国产亚洲| 国产精品伦一区二区三级视频| 久久中文娱乐网| 精品国产一区二区三区av性色| 欧美高清精品3d| 欧美精品久久天天躁| 欧美日韩不卡视频| 欧美美女喷水视频| 欧美日本免费一区二区三区| 欧美三级日韩在线| 欧美怡红院视频| 欧美色视频在线观看|