【发布时间】:2016-03-01 01:06:25
【问题描述】:
我正在编写一个程序,它从一个由 a-z 和数字 0 组成的文件中按顺序读取大量字符。示例如下所示:
a0dgiw00cffn0ai0cbiwa0...
我相信我用这个将这个序列转换为一个字符数组:
strncpy(array, string.c_str(), sizeof(array));
现在我有一个应该如下所示的数组:
[a][0][d][g][i][w][0][0]...
所以我的问题是,将字符数组中的所有值转换为 ASCII 键值的最有效方法是什么?在尽可能少的时间内最有效。如果你不明白我所说的“ASCII 键值”是什么意思,那么最终的数组应该是这样的:
[97][48][100][103][105][119][48][48]...
旁注:可以在here 找到一个 ASCII 键值表。
旁注:我已经知道如何将数组值转换为 ASCII,我只是在寻找一种更快的方法。
提前谢谢你。
【问题讨论】:
-
当您说“ASCII 键值”时,您指的是什么数据类型。因为 'a' 是 [97] 而 '0' 是 [48]。例如
if( 'a' == 97 ){ printf("'a' is 97"); } -
最快的方法是直接将文件读入字符数组(或
std::vector<char>s),完全跳过std::strings的创建和转换…… -
@kuroineko 我从向量开始,然后决定坚持使用数组和字符串。我不是想加快将文件放入字符数组的过程,只是想更快地在字符和 ASCII 之间进行转换。
-
@Synthetic 除非您需要问题中未包含的其他内容,否则您似乎并不理解“字符”和“ASCII”已经完全相同。
-
@Synthetic 这就是我要告诉你的:字符已经存储在 ASCII 中。这就是您的计算机存储字符数组的方式。你可以运行这个来确认:
printf("The character %c is the same as the number %d", 'a', 'a'); printf("The number %d is the same as the character %c", 97, 97);