简单的 int 到 char[] 转换

Simple int to char[] conversion

提问人:Waypoint 提问时间:2/19/2011 最后编辑:Matteo ItaliaWaypoint 更新时间:11/18/2023 访问量:119876

问:

我有一个简单的问题

如何简单地将整数(获取值 0-8)转换为 char,例如 C 中的 char[2]?

谢谢

C 字符编码

评论

4赞 Oliver Charlesworth 2/19/2011
为什么需要 2 个?请举例说明输入和相应的输出。char
0赞 2/19/2011
我不明白你为什么需要.

答:

30赞 Yoko Zunna 2/19/2011 #1
main()
{
  int i = 247593;
  char str[10];

  sprintf(str, "%d", i);
// Now str contains the integer as characters
}

希望对您有所帮助。

评论

1赞 aberaud 1/31/2020
始终使用 or 和传递缓冲区大小,以避免缓冲区溢出和潜在的安全问题,即使对于像这样最简单的情况也是如此。使用是一个安全问题,除非您事先知道输出大小。snprintfsnprintf_ssprintf
1赞 Erik 2/19/2011 #2

使用这个。请注意 i 大于 9,因为这些需要一个包含 2 个以上元素的 char 数组,以避免缓冲区溢出。

char c[2];
int i=1;
sprintf(c, "%d", i);
0赞 xanatos 2/19/2011 #3

你不能在“标准”C 中真正做到这一点,因为 int 和 char 的大小不是固定的。假设您正在英特尔 PC 上使用 Windows 或 Linux 下的编译器......

int i = 5;
char a = ((char*)&i)[0];
char b = ((char*)&i)[1];

记住机器的字节序!而那个 int “通常”是 32 位,所以 4 个字符!

但你可能的意思是“我想串化一个数字”,所以忽略这个回答:-)

1赞 ChrisJ 2/19/2011 #4

如果你想将一个在 0-9 范围内的 int 转换为一个 char,你通常可以这样写:

int x;
char c = '0' + x;

现在,如果你想要一个字符串,只需添加一个终止的“\0”字符:

char s[] = {'0' + x, '\0'};

请注意:

  1. 你必须确保 int 在 0-9 范围内,否则会失败,
  2. 仅当数字的字符代码连续时,它才有效。这在绝大多数基于 ASCII 的系统中都是如此,但不能保证在所有情况下都如此。

评论

1赞 Oliver Charlesworth 2/19/2011
实际上,C 标准保证 to 的表示是连续的和升序的。'0''9'
4赞 prashant00101 9/11/2016 #5
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>
void main()
{
int a = 543210 ;
char arr[10] ="" ;

itoa(a,arr,10) ;   // itoa() is a function of stdlib.h file that convert integer 
                   // int to array itoa( integer, targated array, base u want to             
                   //convert like decimal have 10 

for( int i= 0 ; i < strlen(arr); i++)   //  strlen()   function in string file thar return string length
  printf("%c",arr[i]);

}

评论

0赞 Samuel Li 4/8/2018
虽然它非常易于使用并得到许多编译器的支持,但它似乎没有在 ANSI-C 中定义,如此处所述。itoa
0赞 zheng Huang 11/18/2023 #6

char[] s = {'\0', '\0' ,'\0','\u001A'};s[3]=26 Int32 Data = BitConverter.ToInt32(s);//现在 Data=26

char[] H = 新 char[4]; H[3] = (字符)数据;现在 H == s

评论

0赞 BoP 11/18/2023
该问题要求 C 代码。12年前。