フィルターのクリア

So, while using Fread to open a 4 byte I used uint32 and uint64 for 8 byte value. But what should i do if i want to read a 12 byte value.( for a 6 byte i used ubit(6*8) but cant use 12*8. Any suggessions?

9 ビュー (過去 30 日間)
ck
ck 2016 年 4 月 30 日
コメント済み: ck 2016 年 5 月 1 日
Fread(fid, (precision) *ubit48, skip bytes) for a 6 byte value , so what precision should I use for 12 byte value? Thank you

回答 (1 件)

Jan
Jan 2016 年 4 月 30 日
data = fread(fid, 12, '*uint8');
Now you have the 12 single bytes. You can join the first 8 byte to a UINT64 using typecast:
low = typecast(data(1:8), 'uint64');
high = typecast(data(9:12), 'uint32');
But you see, that you cannot store the result in an integer tyoe with 96 bits directly, because Matlab does not habe such a type. Search for "Matlab vpa" to learn how to use arithmetics with variable precision.
  3 件のコメント
Walter Roberson
Walter Roberson 2016 年 5 月 1 日
You cannot do that for 12 byte values. Instead loop reading 12 buttons at a time and then fseek() forward by the skip.
If you have a sequence that regular you should consider using memmapfile

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeNumeric Types についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by