⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l64a.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#if !defined(lint) && defined(SCCSIDS)static	char sccsid[] = "@(#)l64a.c 1.1 92/07/30 SMI"; /* from S5R2 1.5 */#endif/*LINTLIBRARY*//* * convert long int to base 64 ascii * char set is [./0-9A-Za-z] * two's complement negatives are assumed, * but no assumptions are made about sign propagation on right shift * */#include <values.h>#define BITSPERCHAR	6 /* to hold entire character set */#define BITSPERLONG	(BITSPERBYTE * sizeof(long))#define NMAX	((BITSPERLONG + BITSPERCHAR - 1)/BITSPERCHAR)#define SIGN	(-(1L << (BITSPERLONG - BITSPERCHAR - 1)))#define CHARMASK	((1 << BITSPERCHAR) - 1)#define WORDMASK	((1L << ((NMAX - 1) * BITSPERCHAR)) - 1)static char buf[NMAX + 1];char *l64a(lg)register long lg;{	register char *s = buf;	while (lg != 0) {		register int c = ((int)lg & CHARMASK) + ('0' - 2);		if (c > '9')			c += 'A' - '9' - 1;		if (c > 'Z')			c += 'a' - 'Z' - 1;		*s++ = c;		/* fill high-order CHAR if negative */		/* but suppress sign propagation */		lg = ((lg < 0) ? (lg >> BITSPERCHAR) | SIGN :			lg >> BITSPERCHAR) & WORDMASK;	}	*s = '\0';	return (buf);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -