在 C++ 中将双精度数组值转换为字符值
Converting double array values to char values in C++
我有一个双精度矩阵数组,我需要将其存储到字符数组中。这些 32 位双精度值保证足够小,以适应 8 位字符值。(我的程序中的最大双精度值为 31(。我做了一些研究,我发现的是将双精度存储为 char* 的解决方案,换句话说,将双精度转换为c_string。这不是我想要实现的目标。
// I'm dealing with a 15*4 double array
double **d_array = new double*[15];
d_array[i] = new double[4];
// This creates a char array (That will have > 15*4 spaces)
unsigned char *c_array = new unsigned char [1024];
我可以在双精度矩阵上迭代一个循环以存储到字符矩阵中。假设我有d_array[1][0] = 4。我想有 c_array[5] = 4。因为4是00000100,所以它应该能够适应。
我认为您应该能够在循环中进行赋值,它将自动被截断和转换(您可能会收到编译器警告(:
c_array[0] = d_array[0][0];
To be safe, you could do
c_array[0] = (char)(int)d_array[0][0];
您可能希望使用uint8_t
,因为char
要么是有符号的,要么是无符号的,要么是char
的。
您可以使用static_cast
:
uint8_t value = static_cast<uint8_t>(d_array[i][j]);
如果要将浮点数的字节复制到缓冲区:
uint8_t buffer[4096];
float f_value = 3.14;
uint8_t * p_float = static_cast<uint8_t *>(&f_value);
for (unsigned int i = 0; i < sizeof(float); ++i)
{
buffer[index + i] = p_float[i];
}
相关文章:
- HEX值到wchar_t字符(UTF-8)的转换
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 转换特殊字符(UTF-8)
- 将转换字符键入 int 以用作向量C++的索引
- 将字符随机转换为大写的函数
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 转换字符时Arduino DUE 和 Arduino UNO 之间的区别
- 如何在C++中正确重载运算符转换字符*?
- 如何转换数据结构以在 c++ 中转换字符*
- 不兼容的转换字符
- 将转换字符数组[16]键入为int 128位
- 在c++中转换字符编码
- 使用递归转换字符
- 如何在Objective-C/C/C++中转换字符和字节的位置
- C++到Pep/8汇编语言的转换——字符数组
- 转换字符>十六进制