我想将整数拆分成数字,然后将每个数字转换为ASCII(用C编程语言)。
示例:
int x = 0xABC
/* split integers */
int x1 = 0xA
int x2 = 0xB
int x3 = 0xC
/* convert integers to ASCII */
int x1 = 0x41
int x2 = 0x42
int x3 = 0x43
此外,如果整数只有2位数(十六进制),我仍然需要3个分割:
int y = 0xBC
/* split integers */
int y1 = 0x0
int y2 = 0xB
int y3 = 0xC
.
.
.
非常感谢提前!
答案 0 :(得分:2)
使用数学:x = x 1·16²+ x 2·16 + x 3
使用查找表查看数字是什么:
static const char hex[16] = "0123456789ABCDEF";
y1 = hex[x1];
...
我不会给你一个完整的解决方案,因为这是一个与家庭作业有关的问题。
完整解决方案(不太容易理解):
// Divide by 16^n and take the modulo 16:
int x1 = (x >> 8) & 0xF; // == (x/256) % 16
int x2 = (x >> 4) & 0xF; // == (x/16) % 16
int x3 = (x >> 0) & 0xF; // == x % 16
int y1 = x1 < 10 ? x1+'0' : x1+'A'-10;
int y2 = x2 < 10 ? x2+'0' : x2+'A'-10;
int y3 = x3 < 10 ? x3+'0' : x3+'A'-10;
答案 1 :(得分:1)
好的,你的问题没有给我足够的信息来回答驱魔的“精神”......但是你走了:
int x = 0xABC;
printf("%03X",x); // Result = "ABC"
x = 0xAB;
printf("%03X",x); // Result = "0AB"
如果要存储结果,可以轻松将其修改为sprintf
。
答案 2 :(得分:1)
A PROGRAM TO CONVERT INT INTO ASCII.
#include<stdio.h>
#include<string.h>
#include<conio.h>
char data[1000]= {' '}; /*thing in the bracket is optional*/
char data1[1000]={' '};
int val, a;
char varray [9];
void binary (int digit)
{
if(digit==0)
val=48;
if(digit==1)
val=49;
if(digit==2)
val=50;
if(digit==3)
val=51;
if(digit==4)
val=52;
if(digit==5)
val=53;
if(digit==6)
val=54;
if(digit==7)
val=55;
if(digit==8)
val=56;
if(digit==9)
val=57;
a=0;
while(val!=0)
{
if(val%2==0)
{
varray[a]= '0';
}
else
varray[a]='1';
val=val/2;
a++;
}
while(a!=7)
{
varray[a]='0';
a++;
}
varray [8] = NULL;
strrev (varray);
strcpy (data1,varray);
strcat (data1,data);
strcpy (data,data1);
}
void main()
{
int num;
clrscr();
printf("enter number\n");
scanf("%d",&num);
if(num==0)
binary(0);
else
while(num>0)
{
binary(num%10);
num=num/10;
}
puts(data);
getch();
}
我检查了我的编码,它工作正常。它将任何给定的整数转换为ascii代码。我必须试着告诉我这是你要找的东西。
答案 3 :(得分:0)
由于这是作业,我不打算直接解决这个问题。
首先,我对分割“整数”的意思感到困惑。看起来(从示例中)您希望拆分十六进制数,而不是十进制数。无论哪种方式,想一想如何构建数字:123 = 1 * 100 + 2 * 10 + 3 * 1 = 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0。你如何将1与2和3分开? (提示,使用乘法的反面。)(另一个提示,如果它是十六进制的,记得将你的基数从10改为16)
现在假设您已将数字拆分为单独的变量。好吧,ascii表以非常“方便”的方式构建。查找表格,找到所需数字的ascii值。从那里,它将是一个简单的常量加法/减法,以获得数字的ascii表示。
(另一个提示)我假设您的意思是从int
转换为char
。记住这些位只是数据。您可以更改数据的表示形式。搜索“cast int to char”。