【发布时间】:2018-04-01 17:40:31
【问题描述】:
没有编译错误。然而,结果并不出人意料。我怀疑将 long 转换为 unsigned short int 会导致错误。我如何安全地将 Hex 的多头转换为空头? [要求:将一行字符串(有数字)转换为无符号短整数] 谢谢!
unsigned short int str_to_bin (char* instr_bin_str) {
unsigned short int i = 0;
long j;
char* ptr;
j = strtol (instr_bin_str, &ptr, 10);
if (j == 0) {
fprintf (stderr, "error6: str_to_bin() failed");
return 6;
}
i = (unsigned short) j;
printf("State: 0x%X \n", i);
return i;
}
【问题讨论】:
-
你的输入、预期输出和实际输出是多少?
-
请注意,如果您不打算使用
ptr,则可以将NULL传递给strtol。 -
如果给定的字符串是:0001001000000001,那么输出应该是 0x1201(通过 printf)。但是,我得到 0xDA01。
-
如果输入字符串是二进制的,那么
10是不正确的。 -
你的字面意思是
strtol (instr_bin_str, &ptr, 10),其中10的意思是“base-10”或十进制,并期望它将输入视为二进制...跨度>
标签: c long-integer short unsigned-integer strtol