本人入门,请教C语言们,mac添加成0x开头的地址代码,我实在不会

   String BSSIDstr= 48:31:B7:3E:33:3D

转换为0x48,0x31,0xB7,0x3E,0x33,0x3D

是要拼接成这样吗?0x48:0x31:0xB7:0x3E:0x33:0x3D。

代码如下:

参考链接:


C++中string如何实现字符串分割函数split()_c++ string split_我叫RT的博客-CSDN博客 如:string str1 = "This is a test";string str2 = "This-is-a-test";string str2 = "This+is+a+test";我们如何将以上字符串按照某种分隔符(,-,+),将其分割成四个子串,其值分别为 “This” “is” “a” “test” 。一、使用stringstream流这里我们只需要用到 istringstream(字符串输入流) 构造字符串流,然后从字符串流中按照一定的格式读取数据即可。通常我们使用 cin_c++ string split https://blog.csdn.net/weixin_43919932/article/details/111304250


#include <iostream>

using namespace std;

int main(void){
    
    string BSSIDstr= "48:31:B7:3E:33:3D";  // 原始字符串 
    // https://blog.csdn.net/qq_33375598/article/details/88218117
    string result;  // 存储结果的字符串 
    size_t pos=0;   // 记录寻找到":"的下标 
    size_t pre=0;  //  记录前一个pos的下标的值 
       
    // https://blog.csdn.net/weixin_43919932/article/details/111304250
    pos = BSSIDstr.find(":");  // 寻找":" 
//    cout<<"pos="<<pos<<endl;
    int i=0;
    while(pos!=BSSIDstr.npos){  // 如果找到了":" 
        result +="0x"+BSSIDstr.substr(pre,2);   //则将前一个pos的值后两个字符 前面添加 "0x" 后拼接到字符串 result中 
    //    cout<<"pos="<<pos<<",result="<<result<<",BSSIDstr.substr(pre,pos)="<<BSSIDstr.substr(pre,2)<<endl;
    //    getchar();
        if(i<4){  // 如果没到最后一组数,则每组数字后添加到一个分号 
            result+=":"; 
        }
        
        pre=pos+1; //  将当前寻找到":"的后一个位置,赋值给pre 
    //    cout<<"pre="<<pre<<endl;
        pos=BSSIDstr.find(":",pre); // 寻找下一个":" 
    }
    result +="0x"+BSSIDstr.substr(pre,2);   // 将最后一组数 前面添加 "0x"后 拼接到字符串 result中 
    
    // 打印结果 
    cout<<result;
    
    return 0;
    
}

img

【以下回答由 GPT 生成】

您好!要将一个Mac地址转换为以0x开头的地址代码,可以使用C语言中的字符串处理函数和循环来实现。下面是一个具体的解决方案:

  1. 首先,需要将输入的Mac地址字符串拆分成六个部分,即每两个字符为一部分。可以使用strtok函数和strchr函数来实现。具体步骤如下:
#include <stdio.h>
#include <string.h>

int main() {
    char BSSIDstr[] = "48:31:B7:3E:33:3D";
    char *part;

    // 使用strtok函数按冒号(:)分隔字符串
    part = strtok(BSSIDstr, ":");

    while (part != NULL) {
        // 使用strtol函数将每个部分转换为16进制数
        unsigned int val = (unsigned int)strtol(part, NULL, 16);

        // 打印转换后的结果,以0x开头并以逗号分隔
        printf("0x%02X, ", val);

        // 继续处理下一个部分
        part = strtok(NULL, ":");
    }

    return 0;
}
  1. 运行上述代码,将得到以下输出:
0x48, 0x31, 0xB7, 0x3E, 0x33, 0x3D,

这样就成功将Mac地址转换为以0x开头的地址代码了。其中,0x开头表示这是16进制数,逗号用于分隔每个部分。

这就是将Mac地址转换为以0x开头的地址代码的具体解决方案。希望对您有帮助!如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^