如何在c++中将字符串转换为字节数组
How to convert a string into a byte array in C++
我正在尝试将长度128字节的字符串转换为字节数组。例如:如果我的字符串是"76ab345fd77......"等等。我想把它转换成一个字节数组,所以它应该看起来像{76 ab 34 45 ....}等等,最多64字节。我写了下面的代码,但字节数组总是显示值为1而不是76 ab ....关于我在这里做错了什么,或者是否有更好的方法来实现这一点的任何建议:
char* newSign; // It contains "76ab345fd77...."
int len = strlen(newSign); //len is 128
int num = len/2;
PBYTE bSign;
//Allocate the signature buffer
bSign = (PBYTE)HeapAlloc (GetProcessHeap (), 0, num);
if(NULL == bSign)
{
wprintf(L"**** memory allocation failedn");
return;
}
int i,n;
for(i=0,n=0; n<num ;i=i+2,n++)
{
bSign[n]=((newSign[i]<<4)||(newSign[i+1]));
printf("newsign[%d] is %c and newsign[%d] is %cn",i,newSign[i],i+1,newSign[i+1]);
printf("bsign[%d] is %xn",n,bSign[n]);
//sprintf(bSign,"%02x",()newSign[i]);
}
非常感谢所有的回复。下面的代码为我工作:
BYTE ascii_to_num(char c)
{
if ('0' <= c && c <= '9')
return c - '0';
if ('a' <= c && c <= 'f')
return c -('a'-('0'+10));
}
for(i=0,n=0; n<num ;i=i+2,n++)
{
BYTE a = (ascii_to_num(newSign[i])) & 0x0F;
BYTE b = ascii_to_num(newSign[i+1]) & 0x0F;
bSign[n] = (a<<4) | (b);
printf("bsign[%d] is %xn",n,bSign[n]);
}
代码:
bSign[n]=((newSign[i]<<4)||(newSign[i+1]));
不将十六进制字符转换为字节。还要注意,您需要按位或|而不是逻辑或|。对于十进制数字,更像是
bSign[n]=(((newSign[i]-'0')<<4)|((newSign[i+1]-'0'));
,但你也需要注意a-f值。为此,您需要编写一个函数来将十六进制字符转换为值
。
int hexToVal(char c)
{
c = (c | 0x20) - '0';
if (c<0) error;
if (c>9) {
c -= ('a'-('0'+10));
if (c<10 || c>15) error;
}
return c;
}
bSign[n]=((hexToVal(newSign[i])<<4)|hexToVal(newSign[i+1]));
相关文章:
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 将字节数组转换为带有字节序问题的指针
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 如何在连接器 C++ 中将原始字节转换为字符串
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- 将字节数组转换为多维数组
- C++如何将字符数组转换为字节向量(向量<byte>)
- 如何在C++中将字节向量(std::vector<uint8_t>)转换为不同的uint32_t,uint16_t和uint8_t变量
- 将字符串转换为无符号字符数组/字节数组
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- 将以 null 结尾的字节字符串转换为原始字符串文本
- 正在转换结构数据的字节序
- 如何将 CString 转换为字节 [] 数组?
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 使用 ESP8266/8285 将字符串从 Web 服务器转换为字节数组
- 编译时将字符*转换为字节
- 将字节数组转换为对象C++ |C++中的 C# 位转换器
- C++转换字节
- 将整型转换字节中的字节更改为整数
- c++从字符串化字节转换字节数组