This theme is built with|

十六进制字符串,转化为十六进制数据并write 写出去

如果你想使用 write 函数以十六进制方式发送数据,你需要将十六进制数据转换为字节,并将字节作为参数传递给 write 函数。下面是一个示例程序,演示如何将十六进制字符串转换为字节,并使用 write 函数发送数据:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main() {
    char hex_string[] = "595431325750FFFF0000000000000000";
    int len = strlen(hex_string) / 2;
    unsigned char byte_data[len];

    // 将十六进制字符串转换为字节对象
    for (int i = 0; i < len; i++) {
        sscanf(hex_string + (i * 2), "%2hhx", &byte_data[i]);
    }

    // 打开文件或套接字,例如:
    int sockfd = open("your_socket_file", O_WRONLY);
    if (sockfd == -1) {
        perror("open");
        return 1;
    }

    // 使用 write 函数发送数据
    ssize_t bytes_written = write(sockfd, byte_data, len);
    if (bytes_written == -1) {
        perror("write");
        close(sockfd);
        return 1;
    }

    // 打印发送的字节数
    printf("已发送字节数:%zd\n", bytes_written);

    // 关闭文件或套接字
    close(sockfd);

    return 0;
}

在上述代码中,我们首先将十六进制字符串转换为字节,然后使用 open 函数打开文件或套接字。然后,我们使用 write 函数将字节数据发送到文件或套接字中。最后,我们关闭文件或套接字。

另外 将十六进制数据转换为字符串

#include <stdio.h>
#include <string.h>

int main() {
    char hex_string[] = "595431325750FFFF0000000000000000"; // 你的十六进制字符串

    // 将十六进制字符串转换为字节对象
    unsigned char byte_data[100];
    int len = strlen(hex_string);
    for (int i = 0; i < len; i += 2) {
        sscanf(hex_string + i, "%2hhx", &byte_data[i / 2]);
    }

    // 将字节对象转换为字符串
    char string_data[100];
    for (int i = 0; i < len / 2; i++) {
        sprintf(string_data + i * 2, "%02x", byte_data[i]);
    }

    printf("转换后的字符串:%s\n", string_data);

    return 0;
}

本文作者:第9527号嵌入式菜鸟

本文链接:https://www.cnblogs.com/zhouxingxing7920/p/18023429

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   第9527号嵌入式菜鸟  阅读(56)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起