本文介绍了如何将十六进制字符转换为\x90\x90之类的字节?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种将十六进制字符转换为 \x90\x0d\x41 之类的字节的方法,当我使用 printf()时,是否打印二进制数据?

I am searching a way to convert hex char to bytes like \x90\x0d\x41 and when I use printf(), binary data are printed?

char *hex = "909090904241";

当我需要获取 \x90\x90\x90\ \x90\x42\x42 ,然后在我打印时得到二进制数据。

when I need to get \x90\x90\x90\x90\x42\x42 and when I print I get binary data.

推荐答案

循环在字符串中添加一个新的字符串,并在其前面附加一个 \x ,像这样:

Loop through the string and append to a new string a piece with \x added infront like this:

const char *hex = "909090904241";
char* result = malloc((strlen(hex) * 2 + 1)* sizeof(char));
result[0] = 0;
char piece[] = "\\x00";
for (int i = 0; i < strlen(hex); i+=2) {
  piece[2] = hex[i];
  piece[3] = hex[i+1];
  strcat(result, piece);
}

这篇关于如何将十六进制字符转换为\x90\x90之类的字节?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 18:33