字符串十六进制转字节数组

问题描述 投票:-1回答:1

我如何将一个有十六进制值的字符串转换为一个有这些十六进制值的字节数组?对了,我用的是Arduino。

这个。

String s = "0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff";

需要转换为这个

char test[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

我用了下面的方法 它确实转换了,但是,每个十六进制值都被保存为一个字符,而不是十六进制值。

unsigned int str_len = s.length()+1;
char charArray[str_len];
s.toCharArray(charArray, str_len);
c++ parsing arduino hex microcontroller
1个回答
0
投票

我假设你需要一个十六进制值的数组,也就是字符串中的整数数组。s.Thogh from char test[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; 如果你在你的代码后面添加下面的代码,你将得到一个名为 hexn 其中将包含你的十六进制值。

    int i,hexn[20],k=0,j;
    char tmp[8];
    for (i=0;charArray[i]!='\0' ;i++){
        if(charArray[i]=='x' && charArray[i-1]=='0'){
            j=0;
            while(charArray[i]!=','){
                tmp[j++]=charArray[++i];
                if (charArray[i]=='\0')
                    break;
            }
            sscanf(tmp,"%x",&hexn[k++]);
        }
    }

现在如果你真的需要 char test[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};,我想你没有得到开括号和闭括号,也就是 {}.在这种情况下,你可以使用连接操作符.你可以在你的代码之前做这样的事情。

String s2 = String('{') + s + String('}');

希望对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.