我想使用sscanf将unsigned char数组转换为整数,但只转换3个字符
unsigned char buffer[] = "FF34567A9";
sscanf((const char *)buffer, "%x %x %x", &x, &y, &z);
预期x = FF3,y = 456 z = 7A9
的结果答案 0 :(得分:1)
通常,你可以在循环中为这样的多个值执行此操作
int arr[MAXN];
unsigned char* tmp = buffer;
for ( int i = 0; sscanf((const char*)tmp, "%3x", &arr[i]); ++i, tmp += 3 );
答案 1 :(得分:0)
你自己似乎并不知道变量的类型(例如,在没有const的情况下声明一个常量,至少在编辑之前,只是为了稍后将它转换为const,以及未签名的东西)I&# 39; m推荐std::string
:
std::string s = "123456789";
s = s.substr(0, 3);
int x = std::stoi(s);
关于您的修改:
std::string s = "123456789";
int x = std::stoi(s.substr(0, 3));
int y = std::stoi(s.substr(3, 3));
int z = std::stoi(s.substr(6, 3));