如何将包含两位数字的字母转换为十进制,然后一次只解析 1 位数字?例如...
char letter = 'D';
char firstDigit, secondDigit;
'D' 的十进制数是 68,现在我想用这个方法将十进制数除以我的两个变量。
firstDigit = 6
secondDigit = 8
我怎样才能实现这个目标?谢谢!
最佳答案
让我们将编码数字的 ASCII 字符串称为压缩字符串。我们定义一个函数 packed_get
读取这样一个打包字符串包含的第 k
位数字:
/* packed_get(S, K)
Return the K-th digit of S. */
char
packed_get(char *s, int k)
{
int a = -1;
if(k % 2)
{
a = s[k/2] % 10;
}
else
{
a = s[k/2] / 10;
}
return '0' + a;
}
return
语句采用 ASCII
编码,并将数字作为表示数字的字符而不是数字本身返回。如果将数字作为数字返回更合适,您可以轻松更改此设置。我们需要迭代压缩字符串的第二个函数是计算长度的函数,即我们可以从这样的字符串中读取的位数:
/* packed_length(S)
Return the length of S. */
int
packed_length(char *s)
{
return 2*strlen(s);
}
下面的程序说明了这两个函数的用法。它将 DEMONSTRATION
解压为 68697779788384826584737978
。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* packed_length(S)
Return the length of S. */
int
packed_length(char *s)
{
return 2*strlen(s);
}
/* packed_get(S, K)
Return the K-th digit of S. */
char
packed_get(char *s, int k)
{
int a = -1;
if(k % 2)
{
a = s[k/2] % 10;
}
else
{
a = s[k/2] / 10;
}
return '0' + a;
}
int
main()
{
char* demo = "DEMONSTRATION";
for(int i = 0; i < packed_length(demo); ++i)
{
putchar(packed_get(demo, i));
}
return EXIT_SUCCESS;
}
关于c - 如何从十进制数中一次解析一位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034601/