如何将short int []转换为char *?
short int test[4000];
char* test2;
我试过了:
test2 = (char*)test[4000]
错误 - > PTR无效
答案 0 :(得分:4)
像这样:
test2 = (char*)test;
test[4000]
表示数组test
的4001 st 项,而不是数组本身。
总的来说,这不是一个好主意。至少,您的程序将无法在big-endian和little-endian系统之间移植。不过,如果您正在为特定的微控制器编写代码,那就没关系。
答案 1 :(得分:2)
你在做什么可能是一个坏主意,但是......
test2 = (char*) test;
答案 2 :(得分:0)
因此,您有一个数组形式的缓冲区,并且您希望将其二进制内容写入文件。你这样做:
if (fwrite(test, sizeof(test), 1, f) < 1)
{
// handle error here (write failed)
}
fwrite()
函数用于将二进制数据写入文件(和fread()
读取)。它需要void*
指针,因此它可以使用任何类型(并且C ++隐式地将任何其他指针/数组转换为它)。
sizeof(test)
确定数组的精确大小。如果您不想编写整个部分(即只填充其中的一部分),则需要使用sizeof(short) * N
,其中 N 是填充元素的数量。
1
这里意味着要写入一个数据块;所以fwrite()
会立即写出整个数据。 f
是您要写的文件。并且它返回写入的块数(成功时为1
,失败时为0
。)
为了完整起见,我应该注意到这只是使用fwrite()
的方法之一。使用类似的东西可能更具语义性。
fwrite(test, sizeof(short), N, f)
但是fwrite()
实际上可能只写了部分数据,你需要关心它。换句话说,如果它返回的值小于 N ,则必须重试编写其余部分。