![](/img/trans.png)
[英]c++ - How to convert char * buffer to unsigned short int * bufferSh
[英]Convert short int[] to char*
如何将short int []转换为char *?
short int test[4000];
char* test2;
我尝试了这个:
test2 = (char*)test[4000]
错误-> PTR无效
像这样:
test2 = (char*)test;
test[4000]
装置阵列的4001项ST test
,而不是数组本身。
总的来说,这不是一个好主意。 至少,您的程序不能在大端和小端系统之间移植。 不过,例如,如果您要为特定的微控制器进行编码,则可以。
您正在做什么可能是个坏主意,但是...
test2 = (char*) test;
因此,您有一个数组形式的缓冲区,并且想要将其二进制内容写入文件中。 您可以这样做:
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 ,则必须重新尝试编写其余部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.