如何将十六进制字符串分配给char[]变量
How can I assign hex string to a char[] variable?
假设我的十六进制字符串。hexStr = "aecf"
如何将十六进制字符串值分配给unsigned char myChar[]
,如下所示。谢谢
myChar[0] = 0xae;
myChar[1] = 0xcf;
您可以按如下方式转换数据:
char* hexstr="aecf";
int hexsize=strlen(hexstr);
unsigned char* myChar = new unsigned char[hexsize/2+1];
myChar[hexsize/2]=' '
for (int i=0,intj=0;i<hexsize;i+=2,j++)
{
int tmp;
sscanf(hexstr+i, "%2x",&tmp));
myChar[j]=tmp; // warning, ignore it
}
这是为了防止您不使用静态字符串,否则使用其他答案。
您是从一个字符串开始,然后尝试将其转换为字节数组吗?如果是,请复制字符串,每2个字符附加一个\x。字符串垃圾可以有\x来表示十六进制字符,如myStringLitterial="\xAE\xCF";
char myChar[] = { 0xAE, 0xCF };
除非你自己解析,否则没有什么魔法可以让字符串文字读成二进制,然而,有一种老式的数组文字,考虑到C的弱类型,似乎在很多情况下都能工作。
C方式(使用std::sprintf):
#include <cstdio>
/* ... */
const char *hexStr = "aecf";
unsigned char myChar[3];
std::sprintf (myChar, "%02x%02x", hexStr);
假设hexStr
有偶数长度,myChar
有足够的尺寸,下面的代码符合目的吗(尽管strtol
是C函数)?
#include <string>
#include <cstdlib>
int main() {
std::string hexStr = "aecf";
unsigned char myChar[2];
for ( unsigned i = 0; i < hexStr.size(); i += 2 )
myChar[ i / 2 ] = strtol( hexStr.substr( i, 2 ).c_str(), 0, 16 );
}
我一直在寻找同样的东西,在读了很多之后,终于创建了这个函数
// in = "63 09 58 81"
void hexatoascii(char *in, char* out, int len){
char buf[5000];
int i,j=0;
char * data[5000];
printf("n size %d", strlen(in));
for (i = 0; i < strlen(in); i+=2)
{
data[j] = (char*)malloc(8);
if (in[i] == ' '){
i++;
}
else if(in[i + 1] == ' '){
i++;
}
printf("n %c%c", in[i],in[i+1]);
sprintf(data[j], "%c%c", in[i], in[i+1]);
j++;
}
//printf("n data %c", data);
for (i = 0; i < j-1; i++){
int tmp;
printf("n data %s", data[i] );
sscanf(data[i], "%2x", &tmp);
out[i] = tmp;
}
//printf("n ascii value of hexa %s", out);
}
我重复回答了同样的问题。。。但可能有人会发现它在这里很有用,一个C++风格的
#include <iostream>
#include <sstream>
int main() {
std::string myStr = "1122AA010A";
std::stringstream ss;
int n;
for(int i = 0; i<myStr.length(); ) {
std::istringstream(myStr.substr(i,2))>>std::hex>>n;
ss<<(char)n;
i += 2;
}
std::string result = ss.str();
//could also use ss.str().c_str() to get the c-ish result
std::cout<<"n"<<result<<"n";
return 0;
}
相关文章:
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 如何更好地检查两个 char 变量是否在一组值中?
- 将双精度值转换为 char 变量时字符串流如何工作
- C++ 如何检查 char 变量是否未定义(未初始化)
- 在 c++ 中将 Char 数组添加到 Char * 变量
- char指针或char变量的默认值是多少
- 当对字符变量使用toupper()时,所述char变量输出多个字符.我该如何防止这种情况发生
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 程序的执行在 C++ 中输入 char 变量后结束
- 如何创建一个 char *[] 变量,以便将其传递给函数
- 将 2 位整数分配给 char 变量
- 将值设置为 char ** 变量 c++ 时出错
- 如果我们在 C++ 中声明一个起始'&'的 char 变量会发生什么?
- 在此范围C 中未声明字符串和char变量
- C++:如何将 char 变量分配给向量<char>并访问该向量的元素进行比较?
- 仅将输入的第一个字符用于 char 变量
- 在C 中使用两个CHAR变量评估布尔值
- 尚未声明char变量
- (C++)如何验证 char 变量的用户输入
- 为什么比较两次 char 变量比比较一次短变量更快