void loop() {
String str = "F03A42";
int start = 0;
int arr[2][19];
int t = 0;
//El 'for' lo hace 6 veces hasta que acaba la cadena de datos
for(int ends = 2;ends <= sizeof(str); ends += 2){
char s[2];
//Extra los 2 caracteres necesarios para la conversion
str.substring(start, ends).toCharArray(s, sizeof(s) + 1);
//Luego lo pasa a un array para luego procesarlo de otra manera
//Aqui el problema, si hago:
//arr[t] = (int)s & 0xFF; da un numero estatico (242)
arr[t] = s;
start += 2;
t++;
}
}
示例: F0 是用十六进制编写的(据说),但我需要将 2 个字符传递给一个完整的字节。
void simplificado(){
//El byte
char bit[2] = 'F0';
//Ejemplo
byte d = CharToByte(bit);
//Pero que si convierto 'd' se igual a 240 (Que es el numero entero de 0xF0)
}
您可以使用
sscanf
,但对于这么简单的事情,自己编程可能会很方便(效率)。例如(使用纯 C 字符串)leonbloy的答案是正确的,但不必对所有平台都有效,因为并非所有字符表都具有所有连续的字母和数字(如IBM 臭名昭著的 EBCDIC);尽管如此,您答案中的代码在许多情况下都可以使用(即使有许多版本的 EBCDIC),但为了安全起见,我想提出一种基于以下的方法
switch
:这
swtich
适用于任何编码,无论字母和数字是否连续,对于转换,这个简单的函数就足够了:它可以像这样使用:
可以看到代码在[here]工作,输出如下: