PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 讀bin能不要char或直接轉uint*嗎(已解決)
作者:
Ommm5566
(56天團)
2017-04-16 13:52:13
開發平台(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): 另外一個問題是,這樣轉換會不會有什麼風險在?
作者:
hunandy14
(Charlott.HonG)
2017-04-16 14:10:00
因為你沒有使用正確的語法 reinterpret_cast看起來你並不在意混用cstyle,可以直接(uint32_t*)解決
作者:
s25g5d4
(function(){})()
2017-04-16 15:35:00
要注意 little/big endian 問題前陣子剛好跟你做一樣的事情 我是把 uint32_t 用 htonl通通轉成 big endian 再 reinterpret_cast 寫進去不過如果沒有 portable 的需求的話可以忽略這個問題
作者:
hunandy14
(Charlott.HonG)
2017-04-16 15:46:00
第一個問題可以這樣解決
http://cpp.sh/4kv2n
測試的時候懶得打直接寫auto 忘記改回來~明寫較好讀
作者:
kokal
(細菌)
2017-04-16 22:31:00
c的作法
http://c-faq.com/stdio/extconform.html
作者:
s25g5d4
(function(){})()
2017-04-16 23:36:00
@hunandy14 你的 fileSize 是以 byte 為單位但是你 call resize 是以 element size 為單位吧?
作者:
hunandy14
(Charlott.HonG)
2017-04-16 23:57:00
我直接複製原文的,不曉得有什麼不妥呢~阿我直接開txt測試有補一些語法,發現好像不一樣順手改了,沒注意到呢~是不一樣的不對呀沒看好~仔細看寫法是一樣的~
作者:
Sidney0503
(Sidney0503)
2017-04-17 07:15:00
讀字不固定大小stackoverflow.com/questions/4850241binary都是01所以是 char 比uint小讀不會有問題 轉成unsigned int會有問題
作者:
hunandy14
(Charlott.HonG)
2017-04-19 02:05:00
了解~~
繼續閱讀
Fw: [問題] 如何發現存取越界? c/c++(V.S.)
moebear
[問題] uva 10382 - Watering Grass
HamalAri
[問題] ifdef 命名規則
forb9823018
[問題] 一直都看不懂extern是幹嘛的
OoShiunoO
[問題] 嵌入式特殊語意
TianBonBon
[問題] 回傳過大的物件會有問題嗎
Zero0910
置底閒聊文(2017/1/1-)
wtchen
[問題] Visual c++ 遠端連線mysql
avenger2236
[問題] Timer1
GooLoo
Re: [問題] 請教一題c的題目
hn12404988
Links
booklink
Contact Us: admin [ a t ] ucptt.com