如何使用具有特定长度的sscanf

时间:2015-10-12 10:27:29

标签: c++

我想使用sscanf将unsigned char数组转换为整数,但只转换3个字符

unsigned char buffer[] = "FF34567A9";
sscanf((const char *)buffer, "%x %x %x", &x, &y, &z);

预期x = FF3,y = 456 z = 7A9

的结果

2 个答案:

答案 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));