我正在尝试读取文件(其中包含“标准”文本和“二进制”数据)的内容。从文件读取扩展ASCII字符并将其转换为ASCII十进制值
然后我需要采取该字符(标准或扩展ASCII)并获得相应的十进制(int)ASCII值。
我有一段时间让它正常工作。
这里是代码,以帮助显示我正在做的事情的一个片段......
FILE *fp = fopen(file, "r+");
char *value = NULL;
size_t charSize = sizeof(char) + 1;
value = malloc(charSize);
strcpy(value, "0");
fseek(fp, offset, SEEK_SET);
fgets(value, charSize, fp);
int c = (int)value;
free(value);
我看了是说,你需要使用一个无符号字符的ASCII扩展的事情,但是改变为unsigned char不解决问题(并给编译警告)
我也使用的wchar_t的代码尝试:
....
wchar_t *value = NULL;
value = malloc(2);
wcscpy(value, (wchar_t *)"");
fseek(fp, offset, SEEK_SET);
fgetws(value, 2, fp);
int c = (int)value;
这些都不似乎工作。基本上所有的东西都是0,或者是一些“随机”的值。
例如使用任何三个,我得到: 值:%(正确) C:76678304(号码是每次都不同,但在这同“范围”)(东西告诉我这是不正确的): )
那显然我做错了什么,但我似乎无法推测出来......
任何帮助将是非常赞赏。
这似乎工作的伟大使用字符“%”。我需要使用其他的扩展ascii还是我仍然可以使用char? – kdbdallas 2010-07-14 04:31:49
实际上你应该确保数组/字符串指针类型在读取之前是'unsigned char *'(或者将其转换为这种类型)。顺便说一句,没有“扩展ASCII”这样的东西。 – 2010-07-14 08:46:09
+1表示添加明确的转换以避免警告/错误通常表示代码在开始时是错误的。 – 2010-07-14 09:29:58