雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列

本文提供了一种不使用标准库函数的方法,将无符号长整型的十进制数转换为二进制和十六进制字符串表示形式。通过逐位操作实现转换,适用于计算机科学领域的教学和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。

实现了unsigned long型的转换。

[cpp]  view plain copy
  1. // 十进制转换为二进制,十进制数的每1bit转换为二进制的1位数字  
  2. char *int_to_bin(unsigned long data)  
  3. {  
  4.     int bit_num = sizeof(unsigned long) * 8;  
  5.     char *p_bin = new char[bit_num+1];  
  6.     p_bin[bit_num] = '\0';  
  7.     for (unsigned int i = 0; i < bit_num; ++i)  
  8.     {  
  9.         p_bin[i] = data << i >> (bit_num-1);  
  10.         if (p_bin[i] == 0)  
  11.             p_bin[i] = '0';  
  12.         else if (p_bin[i] == 1)  
  13.             p_bin[i] = '1';  
  14.         else  
  15.             p_bin[i] = 'a';  
  16.     }  
  17.     return p_bin;  
  18. }  
  19.   
  20. // 十进制转换为十六进制,十进制数的每4bit转换为十六进制的1位数字  
  21. char *int_to_hex(unsigned long data)  
  22. {  
  23.     int bit_num = sizeof(unsigned long) * 8;  
  24.     char *p_hex = new char[sizeof(unsigned long)*8/4+3];  
  25.     p_hex[0] = '0';  
  26.     p_hex[1] = 'x';  
  27.     p_hex[bit_num/4+2] = '\0';  
  28.     char *p_tmp = p_hex + 2;  
  29.     for (unsigned int i = 0; i < bit_num/4; ++i)  
  30.     {  
  31.         p_tmp[i] = data << (4*i) >> (bit_num-4);  
  32.         if (p_tmp[i] >= 0 && p_tmp[i] <= 9)  
  33.             p_tmp[i] += '0';  
  34.         else if (p_tmp[i] >= 10 && p_tmp[i] <= 15)  
  35.             p_tmp[i] = p_tmp[i] - 10 + 'A';  
  36.     }  
  37.     return p_hex;  
  38. }  
### 回答1: 1. 打开终端,输入以下命令安装fcitx输入法: sudo apt-get install fcitx fcitx-config-gtk fcitx-table-wubi 2. 安装完毕后,打开“系统设置”-“语言支持”,将“键盘输入法系统”设置为fcitx。 3. 重新启动电脑,打开任意文本编辑器,按下Ctrl+Space键即可切换输入法,选择中文输入法即可开始输入中文。 ### 回答2: 在Linux系统下安装中文输入法有多种方法,以下是其中一种较常见的方法: 1. 打开终端,输入以下命令安装fcitx输入法框架: sudo apt-get install fcitx 2. 安装后,再次在终端中输入以下命令安装fcitx的输入法引擎: sudo apt-get install fcitx-googlepinyin 3. 安装完成后,打开系统设置,找到“地区和语言”或“语言支持”选项,在“输入源”或“键盘输入法系统”中选择fcitx作为默认输入法。 4. 重新启动电脑,启动时会自动加载fcitx输入法框架。 5. 在系统托盘中找到输入法图标,右键点击选择“配置”,进入fcitx配置页面。 6. 在配置页面中,点击“+”号添加中文输入法。一般情况下,选择“pinyin”或“googlepinyin”作为中文输入法。 7. 完成上述步骤后,就可以在需要输入中文的应用程序中使用中文输入法了。在输入框中点击右键,选择“切换输入法”,或使用快捷键(默认为Ctrl + Space)进行切换。 需要注意的是,以上方法适用于大多数Linux系统,对于不同的发行版可能会有细微的差异。对于某些特定的发行版,也可以通过软件包管理器直接搜索和安装相应的中文输入法。另外,还可以通过其他输入法框架,如ibus,来安装和使用中文输入法。 ### 回答3: 要在Linux系统中安装中文输入法,可以按照以下步骤进行操作。 第一步,打开终端窗口,在终端中输入以下命令,以安装ibus输入法框架: sudo apt-get install ibus 第二步,再次在终端中输入以下命令,以安装ibus-pinyin中文输入法: sudo apt-get install ibus-pinyin 第三步,在终端中输入以下命令,以重新启动ibus服务: ibus restart 第四步,打开系统设置,选择“区域与语言”或类似选项,找到“输入源”或“输入法”,然后添加中文输入法。 第五步,在输入法选项中选择新添加的中文输入法,这样就完成了中文输入法的安装。 在使用中文输入法时,可以通过以下方法进行切换: 方法一,使用快捷键:按下Ctrl+空格键,切换输入法。 方法二,通过任务栏中的输入法图标:点击输入法图标,然后从弹出的菜单中选择所需的输入法。 安装中文输入法后,可以在几乎所有的应用程序中使用中文输入。通过切换输入法,可以方便地在中文和其他语言之间切换,满足自己的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值