作者Ommm5566 (56天团)
看板C_and_CPP
标题[问题] 读bin可以不要char*或转uint*能不透过void*吗?
时间Sun Apr 16 13:52:13 2017
开发平台(Platform): win or unix
编译器: C++14
额外使用到的函数库(Library Used):std
问题(Question):
今天遇到一个API需要使用者自己先读取好档案
然後传大小和
uint32_t*进去
但是读binary档案得到的好像只能是
char或
string
所以必须转换一次(
char* ->
void* ->
uint32_t*)
1. 能够读档的时候就用
uint32_t存吗?
或
2.
char*转
uint32_t*能不透过
void*吗?
喂入的资料(Input): binary file
程式码(Code): http://cpp.sh/8cs7
补充说明(Supplement): 另外一个问题是,这样转换会不会有什麽风险在?
--
作者: fleece (...) 看板: KoreanPop
标题: [问题] 请问一个叫O.S.T的歌手
时间: Fri Feb 19 12:25:09 2016
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.223.79.239
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1492321939.A.BD0.html
1F:→ hunandy14: 因为你没有使用正确的语法 reinterpret_cast 04/16 14:10
2F:→ hunandy14: 看起来你并不在意混用cstyle,可以直接(uint32_t*)解决 04/16 14:38
好的 谢谢
※ 编辑: Ommm5566 (61.223.79.239), 04/16/2017 14:53:54
3F:推 s25g5d4: 要注意 little/big endian 问题 04/16 15:35
4F:→ s25g5d4: 前阵子刚好跟你做一样的事情 我是把 uint32_t 用 htonl 04/16 15:36
5F:→ s25g5d4: 通通转成 big endian 再 reinterpret_cast 写进去 04/16 15:36
6F:→ s25g5d4: 不过如果没有 portable 的需求的话可以忽略这个问题 04/16 15:37
8F:→ hunandy14: 测试的时候懒得打直接写auto 忘记改回来~明写较好读 04/16 15:49
10F:推 s25g5d4: @hunandy14 你的 fileSize 是以 byte 为单位 04/16 23:36
11F:→ s25g5d4: 但是你 call resize 是以 element size 为单位吧? 04/16 23:36
12F:→ hunandy14: 我直接复制原文的,不晓得有什麽不妥呢~ 04/16 23:57
13F:→ hunandy14: 阿我直接开txt测试有补一些语法,发现好像不一样 04/17 00:02
14F:→ hunandy14: 顺手改了,没注意到呢~是不一样的 04/17 00:04
15F:→ hunandy14: 不对呀没看好~仔细看写法是一样的~ 04/17 00:14
16F:推 Sidney0503: 读字不固定大小stackoverflow.com/questions/4850241 04/17 07:15
17F:→ Sidney0503: binary都是01所以是 char 比uint小 04/17 07:16
18F:→ Sidney0503: 读不会有问题 转成unsigned int会有问题 04/17 07:17
19F:→ hunandy14: 了解~~ 04/19 02:05