当前位置:   article > 正文

将当前mac地址转换为整数加n后重新转换为Mac地址

将当前mac地址转换为整数加n后重新转换为Mac地址

将当前Mac转换为整数加1后重新转换为Mac,就解决了进位问题

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. // 将 MAC 地址转换为整数
  5. unsigned long long mac_to_int(char *mac) {
  6. char mac_str[18];
  7. strcpy(mac_str, mac);
  8. char *ptr = strtok(mac_str, ":");
  9. unsigned long long mac_int = 0;
  10. while (ptr != NULL) {
  11. mac_int = (mac_int << 8) + strtoul(ptr, NULL, 16);
  12. ptr = strtok(NULL, ":");
  13. }
  14. return mac_int;
  15. }
  16. // 将整数转换为 MAC 地址
  17. void int_to_mac(unsigned long long mac_int, char *mac) {
  18. sprintf(mac, "%02llX:%02llX:%02llX:%02llX:%02llX:%02llX",
  19. (mac_int >> 40) & 0xFF, (mac_int >> 32) & 0xFF, (mac_int >> 24) & 0xFF,
  20. (mac_int >> 16) & 0xFF, (mac_int >> 8) & 0xFF, mac_int & 0xFF);
  21. }
  22. int main() {
  23. char current_mac[] = "00:11:22:33:44:55";
  24. unsigned long long mac_int = mac_to_int(current_mac);
  25. mac_int += 1;
  26. char new_mac[18];
  27. int_to_mac(mac_int, new_mac);
  28. printf("当前 MAC 地址:%s\\n", current_mac);
  29. printf("加1后的 MAC 地址:%s\\n", new_mac);
  30. return 0;
  31. }

情形2

  1. #include <stdio.h>
  2. #include <stdint.h>
  3. typedef uint8_t u8;
  4. // 将 MAC 地址转换为整数
  5. uint64_t mac_to_int(u8 source_mac[6]) {
  6. uint64_t mac_int = 0;
  7. for (int i = 0; i < 6; i++) {
  8. mac_int = (mac_int << 8) + source_mac[i];
  9. }
  10. return mac_int;
  11. }
  12. // 将整数转换为 MAC 地址
  13. void int_to_mac(uint64_t mac_int, u8 dest_mac[6]) {
  14. for (int i = 5; i >= 0; i--) {
  15. dest_mac[i] = mac_int & 0xFF;
  16. mac_int >>= 8;
  17. }
  18. }
  19. int main() {
  20. u8 source_mac[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
  21. uint64_t mac_int = mac_to_int(source_mac);
  22. mac_int += 1;
  23. u8 new_mac[6];
  24. int_to_mac(mac_int, new_mac);
  25. printf("当前 MAC 地址:");
  26. for (int i = 0; i < 6; i++) {
  27. printf("%02X:", source_mac[i]);
  28. }
  29. printf("\\n");
  30. printf("加1后的 MAC 地址:");
  31. for (int i = 0; i < 6; i++) {
  32. printf("%02X:", new_mac[i]);
  33. }
  34. printf("\\n");
  35. return 0;
  36. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/336196
推荐阅读
相关标签
  

闽ICP备14008679号