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

📄 l64a.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
/*	@(#)l64a.c	1.5	*//*	3.0 SID #	1.2	*//*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 + -