将short int []转换为char *

时间:2012-08-26 21:56:00

标签: c++

如何将short int []转换为char *?

short int test[4000];
char* test2;

我试过了:

test2 = (char*)test[4000]

错误 - > PTR无效

3 个答案:

答案 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 ,则必须重试编写其余部分。