二进制转换成十六进制数据到对应的ASCII码,并存储在字符串 [英] Convert binary hex data to ASCII equivalent and store in String
本文介绍了二进制转换成十六进制数据到对应的ASCII码,并存储在字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在Arduino的使用C ++。
I am using C++ on Arduino.
假如我有二进制数据流;
Suppose I have a stream of binary data;
二进制数据: 0xFF的,0×00,0×01,的0xCC
我想它转换成等价的ASCII码,并将其存储在一个String对象类型。
I want to convert it to the ASCII equivalent and store it in a String object type.
转换后的字符串应该是这样的FF0001CC。
The converted string should look like this "FF0001CC".
下面是一些$草案C $ C。
Here are some draft code.
char buffer[100];
String myString;
for (int i=0; i < numBytes; i++)
{
//assume buffer contains some binary data at this point
myString += String(buffer[i], HEX);
}
本code的问题是,的myString
包含 FF01CC
,而不是 FF0001CC
。
推荐答案
我的猜测是String类的每个文本被追加的时候,可以改进调整大小。
假设你知道的输入大小和不断汇入作业,你可以试试这个:
My guess would be that the String class resizes each time a text is appended, that could be improved. Assuming you know the input size and it´s constant, you could try this:
char outbuffer[numBytes*2+1];
const char* pHexTable="0123456789ABCDEF";
int iPos=0;
for(int i=0; i<numBytes; i++){
//assume buffer contains some binary data at this point
const char cHex=buffer[i];
outbuffer[iPos++]=pHexTable[(cHex>>4)&0x0f];
outbuffer[iPos++]=pHexTable[cHex&0x0f];
}
outbuffer[iPos]='\0';
这篇关于二进制转换成十六进制数据到对应的ASCII码,并存储在字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文