从unsigned char * 转换成int,long... 类型

本文详细介绍了如何在C++中实现unsigned char *与int、long等类型之间的转换,并提供了具体的代码示例。对于理解不同数据类型间的内存布局及进行低级别操作具有很好的指导意义。
部署运行你感兴趣的模型镜像
  1.  从unsigned char * 转换成intlong... 类型
  2. //使用c++
  3. unsigned char ps[128];
  4. long *VendorID = reinterpret_cast<long *>(ps);
  5. //从int type to unsigned char *
  6. int VID1= 0x58F;
  7. int ii=0;
  8. int size_int=0;
  9. unsigned char* p=(unsigned char*)&VID;
  10. size_int =sizeof(VID);
  11. for (ii=0;ii <size_int;ii++)
  12.   ps[0].VendorID[size_int-ii-1] = p[size_int-ii-1]; 
  13. }

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在 C 语言中,`unsigned char *` 类型通常用于表示原始的二进制数据。你提到的 `000a.eb00.1375` 看起来像是一个 MAC 地址(Media Access Control Address),它通常以十六进制格式表示,例如: ``` 00:0a:eb:00:13:75 ``` MAC 地址是一个 48 位(6 字节)的二进制数,通常用冒号或点分隔的十六进制表示。 --- ## ✅ 问题解析 你希望用 `unsigned char *` 类型来表示 MAC 地址 `000a.eb00.1375`,也就是: ``` 00:0a:eb:00:13:75 ``` 我们需要将这个字符串形式的 MAC 地址解析成 6 个字节的二进制数据,并存储在一个 `unsigned char[6]` 数组中。 --- ## ✅ 示例代码 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> // 将字符串形式的 MAC 地址换为 6 字节的 unsigned char 数组 int parse_mac(const char *mac_str, unsigned char *mac) { const char *delim = ":-."; char *token, *saveptr; char *mac_copy = strdup(mac_str); // 创建副本用于解析 int i = 0; for (token = strtok_r(mac_copy, delim, &saveptr); token && i < 6; token = strtok_r(NULL, delim, &saveptr)) { unsigned long val = strtoul(token, NULL, 16); if (val > 255) { free(mac_copy); return -1; // 超出 1 字节范围 } mac[i++] = (unsigned char)val; } free(mac_copy); return (i == 6) ? 0 : -1; // 必须有 6 个字节 } int main() { const char *mac_str = "000a.eb00.1375"; unsigned char mac[6]; if (parse_mac(mac_str, mac) == 0) { printf("MAC 地址解析成功: "); for (int i = 0; i < 6; i++) { printf("%02x%s", mac[i], (i < 5) ? ":" : "\n"); } } else { printf("MAC 地址解析失败\n"); } return 0; } ``` --- ## ✅ 输出示例 ``` MAC 地址解析成功: 00:0a:eb:00:13:75 ``` --- ## ✅ 代码解释 1. `parse_mac` 函数: - 使用 `strtok_r` 按照 `:`、`-` 或 `.` 分割字符串。 - 将每个部分用 `strtoul` 换为十六进制整数。 - 存入 `unsigned char mac[6]` 数组中。 2. `main` 函数: - 输入 MAC 地址字符串 `"000a.eb00.1375"`。 - 调用解析函数,输出解析后的二进制数据(以十六进制形式打印)。 --- ## ✅ 总结 - `unsigned char *` 是 C 中处理原始二进制数据的标准方式。 - MAC 地址是 6 字节的二进制数据,通常以十六进制字符串表示。 - 上述代码可以将任意格式的 MAC 字符串(如 `00:0a:eb:00:13:75` 或 `000a.eb00.1375`)解析为字节数组。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值