如何将包含两位数的字母转换为十进制数,然后一次只解析一位数?例如......
char letter = 'D';
char firstDigit, secondDigit;
' d'是十进制的68,现在这就是我想要除以我的两个变量的十进制数。
firstDigit = 6
secondDigit = 8
我怎样才能做到这一点?谢谢!
答案 0 :(得分:0)
让我们将您的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;
}
答案 1 :(得分:-1)
int firstDigit = ((int)letter)/10;
int secondDigit = ((int)letter)%10;
答案 2 :(得分:-2)
如果是Java:
char letter = 'D';
int intLetter = (int) letter;
char[] digits = Integer.toString(intLetter).toCharArray();
现在,您可以将数字数组中的两位数字转换回整数:
digits[0] = 6
digits[1] = 8
然后你可以用那些来执行任何操作。
您甚至可以在以下行中执行此操作:
char[] digits = Integer.toString((int) letter).toCharArray();