00001 /* src_experimental/libc/putnum.c 00002 CubeOS Version 0.4.90 experimental 00003 Copyright (C) 1999,2000 Holger Kenn 00004 00005 CubeOS is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or any later version. 00009 00010 CubeOS is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 */ 00016 /* putnum.c -- put a hex number on the output device. 00017 00018 * Copyright (c) 1995 Cygnus Support 00019 * 00020 * The authors hereby grant permission to use, copy, modify, distribute, 00021 * and license this software and its documentation for any purpose, provided 00022 * that existing copyright notices are retained in all copies and that this 00023 * notice is included verbatim in any distributions. No written agreement, 00024 * license, or royalty fee is required for any of the authorized uses. 00025 * Modifications to this software may be copyrighted by their authors 00026 * and need not follow the licensing terms described here, provided that 00027 * the new terms are clearly indicated on the first page of each file where 00028 * they apply. 00029 */ 00030 00031 /* \file putnum.c 00032 \ingroup LIBC 00033 */ 00034 00035 extern void print (char *); 00036 00042 void putnum (unsigned int num) 00043 { 00044 char buf[9]; 00045 int cnt; 00046 char *ptr; 00047 int digit; 00048 00049 ptr = buf; 00050 for (cnt = 7; cnt >= 0; cnt--) { 00051 digit = (num >> (cnt * 4)) & 0xf; 00052 00053 if (digit <= 9) 00054 *ptr++ = (char) ('0' + digit); 00055 else 00056 *ptr++ = (char) ('a' - 10 + digit); 00057 } 00058 00059 *ptr = (char) 0; 00060 print (buf); 00061 }