Effacer les filtres
Effacer les filtres

How to write a program that selectively picks hexadecimal values from a text file based on bit size?

2 vues (au cours des 30 derniers jours)
Hello all! I have a text file that is full of 16bit, 32bit, 64bit, and 128bit hexadecimal values, and I was trying to write a program that asks user the bit-size, then once the size is selected, a random hexadecimal value from the text file is spit out. I was thinking about if statements, but nothing I try is working. Any help or guidance would be greatly appreciated!
Edit Sorry! I have added the text file, but it is 4 hex values per a line, then enter. There are a lot more values than this in the real one but it follows same format
Edit#2
I am mostly confused with syntax for the bit selector, but I was thinking something like:
read file,
user selects bit mode (4 options)
if 16bit --> rand
if 32bit --> rand
if 64bit -->rand
if 128bit -->rand
if anything else, error
  7 commentaires
Akana Juliet
Akana Juliet le 15 Juin 2021
@Scott MacKenzie Actually, it's more like
lines 1-20 are all 16bit
lines 21-40 are all 32bit
lines 41-60 are all 64bit
lines 61-80 are all 128bit
Sorry for the lack of context in my question! I hope this helps convey. Thanks so much for helping me
Scott MacKenzie
Scott MacKenzie le 15 Juin 2021
OK thanks. I see that @David Hill has just posted an succinct answer. Good luck.

Connectez-vous pour commenter.

Réponse acceptée

David Hill
David Hill le 15 Juin 2021
r=randi(4);
a=readcell('hextest.txt');
x=input('hex length: ');
hexValue=a{log2(x/16)+1,r};
  3 commentaires
David Hill
David Hill le 15 Juin 2021
Yes. If you don't want any repetitions, use randperm.
r=randperm(4,3);%selects 3 in random order from 1:4
a=readcell('hextest.txt');
x=input('hex length: ');
hexValue=a(log2(x/16)+1,r);%output is a cell array
Akana Juliet
Akana Juliet le 15 Juin 2021
Thank you so much for your help @David Hill ! I just have one final question, what am I doing wrong with my print statement? I'm only seeing 1 random value posted?
r=randi(4,3);
a=readcell('anothertest.txt');
x=input('Enter bit length: ');
hexValue=a{log2(x/16)+1,r};
fprintf('%s %s %s\n', hexValue);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by