如果你想使用 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;
}
标签:十六进制,string,int,写出去,write,字符串,data
From: https://www.cnblogs.com/zhouxingxing7920/p/18023429