将int转换为ASCII字符

use*_*241 58 c c++ ascii

我有

int i = 6;
Run Code Online (Sandbox Code Playgroud)

而且我要

char c = '6'
Run Code Online (Sandbox Code Playgroud)

通过转换.有什么简单的建议吗?

编辑: 我还需要生成一个随机数,并转换为一个字符,然后添加一个'.txt'并在ifstream中访问它.

Eug*_*its 274

直截了当的方式:

char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];
Run Code Online (Sandbox Code Playgroud)

更安全的方式:

char aChar = '0' + i;
Run Code Online (Sandbox Code Playgroud)

通用方式:

itoa(i, ...)
Run Code Online (Sandbox Code Playgroud)

方便的方式:

sprintf(myString, "%d", i)
Run Code Online (Sandbox Code Playgroud)

C++方式:(摘自Dave18答案)

std::ostringstream oss;
oss << 6;
Run Code Online (Sandbox Code Playgroud)

老板的方式:

乔,给我写了一个int到char转换器

Studboss方式:

char aChar ='6';

乔的方式:

char aChar ='6'; // int i = 6;

美国宇航局的方式:

//等待卫星回复......

外星人的方式:'9'

//问候.

上帝的方式:

布鲁赫我建造了这个

彼得潘的方式:

char aChar;

switch (i)
{
  case 0:
    aChar = '0';
    break;
  case 1:
    aChar = '1';
    break;
  case 2:
    aChar = '2';
    break;
  case 3:
    aChar = '3';
    break;
  case 4:
    aChar = '4';
    break;
  case 5:
    aChar = '5';
    break;
  case 6:
    aChar = '6';
    break;
  case 7:
    aChar = '7';
    break;
  case 8:
    aChar = '8';
    break;
  case 9:
    aChar = '9';
    break;
  default:
    aChar = '?';
    break;
}
Run Code Online (Sandbox Code Playgroud)

圣诞老人的方式:

//Wait till Christmas!
sleep(457347347);
Run Code Online (Sandbox Code Playgroud)

重力的方式:

//什么

'6'(泽西岛)Mikes''方式:

//

所以方式:

伙计们,我如何避免阅读初学者的C++指南?

我的方式:

或者高速公路.

评论:我添加了Handy方式和C++方式(有完整的集合),我将其保存为维基.

编辑:满意吗?

  • 你的上司意味着"老板",但我在"老板"中读到它,就像"布鲁斯斯普林斯汀是*老板*"一样.也许你可以修改那个案子? (14认同)
  • 关于Joe的方式?还是美国宇航局的方式?还是外星人的方式?还是神的方式?还是Peter Pans的方式?圣诞老人的方式怎么样?还是Gravity的方式?你应该开始一个清单?也许检查两次,万一你错过了什么? (6认同)
  • @AbstractDissonance可以得到一个与米凯什道™...我喜欢我一些州米凯什. (2认同)

abe*_*nky 24

这只适用于0位数的int数字,但你的问题似乎表明这可能就足够了.

它的工作原理是将char的ASCII值添加'0'到整数位.

int i=6;
char c = '0'+i;  // now c is '6'
Run Code Online (Sandbox Code Playgroud)

例如:

'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'
Run Code Online (Sandbox Code Playgroud)

编辑

目前还不清楚你的意思,"为字母表工作"?如果你想要字母的第5个字母:

int i=5;
char c = 'A'-1 + i; // c is now 'E', the 5th letter.
Run Code Online (Sandbox Code Playgroud)

请注意,因为在C/Ascii中,A被认为是字母表的第0个字母,所以我做了减1来补偿第5个字母的通常理解含义.

根据您的具体情况进行适当调整.
(和测试测试!你写的任何代码)

  • 好吧,你需要告诉我们你想要什么."为字母工作"真的不是很具描述性. (4认同)

Nat*_* S. 10

仅供参考,如果您想要多于一位数的数字,您可以使用sprintf:

char txt[16];
int myNum = 20;
sprintf(txt, "%d", myNum);
Run Code Online (Sandbox Code Playgroud)

然后第一个数字位于txt [0]的char中,依此类推.

(这是C方法,而不是C++方法.C++方式是使用字符串流.)

  • 总是喜欢`snprintf`而不是`sprintf`(考虑一个128位整数或其他的假设系统).无论如何,对于不会在数字不连续的字符集中中断的方法+1. (3认同)
  • @Mark B:标准C要求数字是连续的. (2认同)

小智 5

这就是我将数字转换为 ASCII 代码的方法。0到9的十六进制代码是0x30-0x39。6 就是 0x36。

unsigned int temp = 6;
or you can use unsigned char temp = 6;
unsigned char num;
 num = 0x30| temp;
Run Code Online (Sandbox Code Playgroud)

这将为您提供 6 的 ASCII 值。您对 0 - 9 执行相同的操作

为了将 ASCII 转换为数值,我想出了这段代码。

unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;
Run Code Online (Sandbox Code Playgroud)