没有编译错误。但是,结果不是预期的。我怀疑是铸造long to unsigned short int导致错误。我怎样才能安全地长期使用Hex? [Requiriments:将一行字符串(有数字)转换为unsigned short int]谢谢!
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;
}
答案 0 :(得分:1)
您传入的字符串是数字的二进制表示形式。但是,当您调用strtol
时,为第三个参数传入10,这意味着它需要十进制表示的字符串。
如果你期待二进制文件,你需要告诉strtol
期望:
j = strtol (instr_bin_str, &ptr, 2);