【发布时间】:2020-11-05 11:25:07
【问题描述】:
我试图以十六进制显示一个宽字符,它给了我意想不到的结果,它总是像 2 位十六进制和我的代码。
#include "stdlib.h"
#include "stdio.h"
#include"wchar.h"
#include "locale.h"
int main(){
setlocale(LC_ALL,"");
wchar_t ch;
wscanf (L"%lc",&ch);
wprintf(L"%x \n",ch);
return 0;
}
输入:Ω
结果:0xea
预期结果:0xcea9
我多次更改setlocale,但结果始终相同。
通知
当输入值小于 1 字节时,它按预期工作。
【问题讨论】:
-
“将宽字符转换为十六进制”是什么意思?您能否举一个您希望看到的字符示例和输出示例?
it gives me unexpected results究竟是什么结果?能否请您添加#include和int main- 第 1000 次编写它们不好玩? -
旁白:
#include "stdlib.h"(等)应该是#include <stdlib.h>,除非您有自己的库版本可以使用而不是提供的库版本。 -
@kamilCuk 好的,我澄清了我的代码,你能帮忙吗
-
@WeatherVane 我也试过了,但没有任何改变