将字节数组转换为逗号分隔的整数字符串
Array of bytes into a string of comma separated int
我有一个控制计时器的Arduino。计时器的设置存储在字节数组中。我需要将数组转换为字符串以在外部 Redis 服务器上设置字符串。
因此,我有许多不同长度的字节数组,我需要将其转换为字符串,以作为参数传递给期望char[]
的函数。我需要用逗号分隔并以"\0"结尾的值。
byte timer[4] {1,5,23,120};
byte timer2[6] {0,0,0,0,0,0}
我已经成功地使用这样的sprintf()
为每个数组手动执行此操作
char buf[30];
for (int i=0;i<5;i++){ buf[i] = (int) timer[i]; }
sprintf(buf, "%d,%d,%d,%d,%d",timer[0],timer[1],timer[2],timer[3],timer[4]);
这给了我一个输出字符串buf
:1,5,23,120
但是我必须在sprintf()
中使用固定数量的"占位符"。
我想想出一个函数,我可以将数组的名称传递给该函数(例如timer[]
),这将构建一个字符串,可能使用"可变长度"的 for 循环(取决于特定的数组到"处理")和许多strcat()
函数。我已经尝试了几种方法来做到这一点,它们对编译器和我都没有意义!
我应该走哪条路?
这是在普通 C 中可以做到这一点的低技术方法。
char* toString(byte* bytes, int nbytes)
{
// Has to be static so it doesn't go out of scope at the end of the call.
// You could dynamically allocate memory based on nbytes.
// Size of 128 is arbitrary - pick something you know is big enough.
static char buffer[128];
char* bp = buffer;
*bp = 0; // means return will be valid even if nbytes is 0.
for(int i = 0; i < nbytes; i++)
{
if (i > 0) {
*bp = ','; bp++;
}
// sprintf can have errors, so probably want to check for a +ve
// result.
bp += sprintf(bp, "%d", bytes[i])
}
return buffer;
}
一个实现,假设timer
是一个数组(否则,size 必须作为参数传递),并具有逗号的特殊处理。
基本上,在临时缓冲区中打印整数,然后连接到最终缓冲区。在需要的地方用逗号胡椒粉。
注意,输出缓冲区的大小没有经过测试。
#include <stdio.h>
#include <strings.h>
typedef unsigned char byte;
int main()
{
byte timer[4] = {1,5,23,120};
int i;
char buf[30] = "";
int first_item = 1;
for (i=0;i<sizeof(timer)/sizeof(timer[0]);i++)
{
char t[10];
if (!first_item)
{
strcat(buf,",");
}
first_item = 0;
sprintf(t,"%d",timer[i]);
strcat(buf,t);
}
printf(buf);
}
相关文章:
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 分隔整数 (C++) 的数字
- 从 stdio 获取一行空格分隔的整数,而不知道它们是多少 (C++)
- 从文件中读取后,将分号分隔的整数存储到数组中
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 如何将输入重定向与特殊整数作为分隔线和直至EOF
- 字符串流分析逗号分隔的整数
- 将字节数组转换为逗号分隔的整数字符串
- 我如何使用CIN输入整数,每个数字都被逗号分隔
- 使用 cin 读取逗号分隔的整数对 (x,y) 和任意空格
- C++输出逗号分隔的整数的程序
- 如何读取用户输入的逗号分隔整数
- 正在分析逗号分隔字符串中的整数
- 不能在一行中输入 (cin) 超过 10 个整数,以空格分隔到数组中
- 如何在C++中拆分字符串,其中包含两个由":"分隔的整数?
- 读取空格将数字从文本文件分隔到整数数组 (C++)
- 如何读入和分隔分隔整数,例如"100_4_1 - 15"
- 空格分隔整数的验证
- c++分隔整数