webForumDet fria alternativet

Binary read

6 svar · 249 visningar · startad av saw

sawMedlem sedan mars 20011 883 inlägg
#1

Någon som kan hjälpa mig med en funktion för binary read, som läser byte för byte? :q

SPiNMedlem sedan mars 20005 832 inlägg
#2

Vad jag har förstått så går inte det riktigt i C/C++, eftersom att det inte finns någon datatyp som definierar en byte. Det närmaste du kommer är i så fall en char, som är definierad som åtta bitar. Alltså; Läs en char i taget så läser du åtta bitar - en byte - i taget. Vad vill du egentligen åstadkomma?

NickemannenMedlem sedan aug. 20003 524 inlägg
#3

System.IO.BinaryReader() ???

SPiNMedlem sedan mars 20005 832 inlägg
#4

Ooh, jag var i fel forum... Sorry. :r

sawMedlem sedan mars 20011 883 inlägg
#5

Backgrund:
Jag försöker att läsa en sty-fil, för att kunna förska förstå hur stylerna in min JORG PA 80(Keyboard) fungera.

Jag har sökt ganska länge och kommit hit:

					
BinaryReader binReader = new BinaryReader(File.Open(filnamn, FileMode.Open));

if(binReader.PeekChar() != -1)
{
rText.Text = binReader.ReadString();
//rText.Text= r.ReadString().Replace(null,"");
binReader.Close();
}

Det händer ingenting när jag kör denna koden, men jag får inga fel heller...
Jag har också för mig att man skall köra en replace, men gör jag det , DÅ kommer error.

GladhMedlem sedan maj 20013 024 inlägg
#6
rText.Text = binReader.ReadString();

För att göra en ReadString() så tror jag att din ström måste ha blivit skapad en BinaryWrite, vilket den säkert inte har.

Du borde använda vanliga Read() som läser en byte itaget tills du nått slutet på strömern.
Alltså något sånt här om jag kommer ihåg rätt.

readerNOTEOF = true;
While(readerNOTEOF){
byte b = binReader.Read();
if(b == -1)
 readerNOTEOF = false;
else
 console.write(b);
}

Men reservartion för feltänk :)

- M
}

sawMedlem sedan mars 20011 883 inlägg
#7

Jag har kommot så här långt:

if((myStream = openFileDialog1.OpenFile())!= null) 
{ 
Byte[] myBytes = new Byte[myStream.Length]; 
int i = myStream.Read(myBytes,0,myBytes.Length); 
rText.Text = System.Text.Encoding.UTF8.GetString(myBytes);         
myStream.Close(); 
}

Jag kan öppna väldigt mycket, men inte se mina sty-filer...
I VB kude jag skriva så här:

sFil = Label1.Caption
Text1.Text = ""
Open sFil For Binary As #1
  strRow = String(LOF(1), " ")
  Get #1, , strRow
  strText = Replace(strRow, vbNullChar, "")
  'strText = Replace(strRow, vbNullChar, " ")
  Text1.Text = strText

Men i C# så verkar det värre...

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb