conversion.mod

来自「minix操作系统最新版本(3.1.1)的源代码」· MOD 代码 · 共 74 行

MOD
74
字号
(*  (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.  See the copyright notice in the ACK home directory, in the file "Copyright".*)(*$R-*)IMPLEMENTATION MODULE Conversions;(*  Module:	numeric-to-string conversions  Author:	Ceriel J.H. Jacobs  Version:	$Header: /cvsup/minix/src/lib/libm2/Conversion.mod,v 1.1.1.1 2005/04/21 14:56:19 beng Exp $*)  PROCEDURE ConvertNum(num, len, base: CARDINAL;		       neg: BOOLEAN;		       VAR str: ARRAY OF CHAR);    VAR i: CARDINAL;	r: CARDINAL;	tmp: ARRAY [0..20] OF CHAR;    BEGIN	i := 0;	REPEAT		r := num MOD base;		num := num DIV base;		IF r <= 9 THEN			tmp[i] := CHR(r + ORD('0'));		ELSE			tmp[i] := CHR(r - 10 + ORD('A'));		END;		INC(i);	UNTIL num = 0;	IF neg THEN		tmp[i] := '-';		INC(i)	END;	IF len > HIGH(str) + 1 THEN len := HIGH(str) + 1; END;	IF i > HIGH(str) + 1 THEN i := HIGH(str) + 1; END;	r := 0;	WHILE len > i DO str[r] := ' '; INC(r); DEC(len); END;	WHILE i > 0 DO str[r] := tmp[i-1]; DEC(i); INC(r); END;	WHILE r <= HIGH(str) DO		str[r] := 0C;		INC(r);	END;    END ConvertNum;  PROCEDURE ConvertOctal(num, len: CARDINAL; VAR str: ARRAY OF CHAR);  BEGIN   	ConvertNum(num, len, 8, FALSE, str);  END ConvertOctal;     PROCEDURE ConvertHex(num, len: CARDINAL; VAR str: ARRAY OF CHAR);  BEGIN   	ConvertNum(num, len, 16, FALSE, str);  END ConvertHex;     PROCEDURE ConvertCardinal(num, len: CARDINAL; VAR str: ARRAY OF CHAR);     BEGIN   	ConvertNum(num, len, 10, FALSE, str);  END ConvertCardinal;     PROCEDURE ConvertInteger(num: INTEGER;			   len: CARDINAL;                              VAR str: ARRAY OF CHAR);   BEGIN 	IF (num < 0) AND (num >= -MAX(INTEGER)) THEN		ConvertNum(-num, len, 10, TRUE, str);	ELSE		ConvertNum(CARDINAL(num), len, 10, num < 0, str);	END;  END ConvertInteger; END Conversions.

⌨️ 快捷键说明

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