本文整理汇总了C#中BinaryWriter.Seek方法的典型用法代码示例。如果您正苦于以下问题:C# BinaryWriter.Seek方法的具体用法?C# BinaryWriter.Seek怎么用?C# BinaryWriter.Seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BinaryWriter
的用法示例。
在下文中一共展示了BinaryWriter.Seek方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
public static void Main() {
var ms = new MemoryStream();
ms.Write(new byte[] { 0, 1, 2, 3 }, 0, 4);
PrintStatus(ms);
using (var bw = new BinaryWriter(ms)) {
bw.Seek(1, SeekOrigin.Begin);
PrintStatus(ms);
bw.Seek(1, SeekOrigin.End);
PrintStatus(ms);
}
}
示例2: Write
public void Write (float[] clipData, WaveFormatChunk format, FileStream stream)
{
WaveHeader header = new WaveHeader ();
WaveDataChunk data = new WaveDataChunk ();
data.shortArray = new short[clipData.Length];
for (int i = 0; i < clipData.Length; i++)
data.shortArray [i] = (short)(clipData [i] * 32767);
data.dwChunkSize = (uint)(data.shortArray.Length * (format.wBitsPerSample / 8));
BinaryWriter writer = new BinaryWriter (stream);
writer.Write (header.sGroupID.ToCharArray ());
writer.Write (header.dwFileLength);
writer.Write (header.sRiffType.ToCharArray ());
writer.Write (format.sChunkID.ToCharArray ());
writer.Write (format.dwChunkSize);
writer.Write (format.wFormatTag);
writer.Write (format.wChannels);
writer.Write (format.dwSamplesPerSec);
writer.Write (format.dwAvgBytesPerSec);
writer.Write (format.wBlockAlign);
writer.Write (format.wBitsPerSample);
writer.Write (data.sChunkID.ToCharArray ());
writer.Write (data.dwChunkSize);
foreach (short dataPoint in data.shortArray) {
writer.Write (dataPoint);
}
writer.Seek (4, SeekOrigin.Begin);
uint filesize = (uint)writer.BaseStream.Length;
writer.Write (filesize - 8);
writer.Close ();
}
示例3: iPhoneVersionHeader
static byte[] iPhoneVersionHeader()
{
byte[] bVersionHeader = new byte[20];
MemoryStream MS = new System.IO.MemoryStream(bVersionHeader);
BinaryWriter BW = new BinaryWriter(MS);
BW.Seek(4, SeekOrigin.Begin);
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)20));
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)1));
BW.Close();
MS.Close();
return bVersionHeader;
}
示例4: USBMUXConnection
// A USBMUX connection is created for each port that will be used for communication.
// For instance, one will be created on port 0xF27E for the lockdown protocol.
// Communications are all prefaced by a TCP-like packet header that is managed on a
// per-connection basis by this class.
public USBMUXConnection(iPhoneWrapper IPW, ushort SPort, ushort DPort)
{
if (IPW == null || !IPW.Usable) throw new Exception("No device ready in USBMUXConnection constructor.");
if (SPort == 0 || DPort == 0) throw new Exception("Need non-zero ports to create USBMUXConnection");
iPhone = IPW;
BufferedPacketsWaiting = new Queue<byte[]>();
SourcePort = SPort;
DestPort = DPort;
SentCount = 0;
ReceivedCount = 0;
// Initialize packet header for SYN step of handshake.
byPacketHeader = new byte[28];
MemoryStream MS = new MemoryStream(byPacketHeader);
BinaryWriter BW = new BinaryWriter(MS);
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)6)); // Type
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)28)); // Length
BW.Write(System.Net.IPAddress.HostToNetworkOrder((short)SourcePort)); // Source port
BW.Write(System.Net.IPAddress.HostToNetworkOrder((short)DestPort)); // Destination port
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)SentCount)); // Self Count
BW.Write(System.Net.IPAddress.HostToNetworkOrder((int)ReceivedCount)); // OCnt
BW.Write((byte)0x50); // Offset
BW.Write((byte)2); // TCP Flag = SYN
BW.Write(System.Net.IPAddress.HostToNetworkOrder((short)0x0200)); // Window size
BW.Seek(2, SeekOrigin.Current); // Always zero
BW.Write(System.Net.IPAddress.HostToNetworkOrder((short)28)); // Length16
BW.Close();
MS.Close();
// Initiate handshake: send SYN.
if (SendHeader() < 0)
throw new Exception("Failed to send SYN");
// Continue handshake: receive SYNACK.
byte[] byResponse = iPhone.ReceiveFromiPhone();
if (byResponse == null || byResponse.Length != 28 || byResponse[0x15] != 0x12)
throw new Exception("Expected SYNACK, got something else.");
byPacketHeader[0x15] = 0x10;
SentCount = 1;
ReceivedCount = 1;
}
示例5: SaveLevel
private static void SaveLevel(Constants.Levels level, RankingData data)
{
using (BinaryWriter bw = new BinaryWriter(File.OpenWrite("Data/ranking.dat")))
{
bw.Seek(24 * (int)level + 4, SeekOrigin.Begin);
for (int i = 0; i < RankingData.MaxEntries; i++)
{
string name = StringTool.Truncate (data.Ranks [(int)IORanking.Ranking.BestScore].Name [i], 20);
bw.Write (Encoding.ASCII.GetBytes (name));
bw.Write (new byte[20 - name.Length]);
bw.Write (data.Ranks [(int)IORanking.Ranking.BestScore].Score [i]);
}
for (int i = 0; i < RankingData.MaxEntries; i++)
{
string name = StringTool.Truncate (data.Ranks [(int)IORanking.Ranking.BestTime].Name [i], 20);
bw.Write (Encoding.ASCII.GetBytes (name));
bw.Write (new byte[20 - name.Length]);
bw.Write (data.Ranks [(int)IORanking.Ranking.BestTime].Score [i]);
}
for (int i = 0; i < RankingData.MaxEntries; i++)
{
string name = StringTool.Truncate (data.Ranks [(int)IORanking.Ranking.BestScoreTime].Name [i], 20);
bw.Write (Encoding.ASCII.GetBytes (name));
bw.Write (new byte[20 - name.Length]);
bw.Write (data.Ranks [(int)IORanking.Ranking.BestScoreTime].Score [i]);
}
bw.Close ();
}
return;
}
示例6: runTest
public bool runTest()
{
Console.WriteLine(s_strTFPath + "\\" + s_strTFName + " , for " + s_strClassMethod + " , Source ver " + s_strDtTmVer);
int iCountErrors = 0;
int iCountTestcases = 0;
String strLoc = "Loc_000oo";
String strValue = String.Empty;
try
{
BinaryReader sr2;
BinaryWriter sw2;
FileStream fs2;
String filName = s_strTFAbbrev+"Test.tmp";
if(File.Exists(filName))
File.Delete(filName);
strLoc = "Loc_9577b";
fs2 = new FileStream(filName, FileMode.Create);
sw2 = new BinaryWriter(fs2);
sw2.Write("Dette er sjef");
sw2.Close();
strLoc = "Loc_49t8e";
fs2 = new FileStream(filName, FileMode.Open);
sw2 = new BinaryWriter(fs2);
sw2.Close();
sw2.Close();
sw2.Close();
iCountTestcases++;
try {
sw2.Seek(1, SeekOrigin.Begin);
iCountErrors++;
printerr( "Error_687yv! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_y67y9! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_9y7g7! Incorrect exception thrown, exc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write(new Byte[2], 0, 2);
iCountErrors++;
printerr( "Error_9177g! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_80093! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_7100b! Incorrect exception thrown, exc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write(new Char[2], 0, 2);
iCountErrors++;
printerr( "Error_2398j! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_t877b! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_787yb! Incorrect exception thrown, exc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write(true);
iCountErrors++;
printerr( "Error_10408! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_1098t! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_178t5! Incorrect exception thrown, exc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write((Byte)4);
iCountErrors++;
printerr( "Error_17985! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_0984s! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_019g8! Incorrect exception thrown, excc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write(new Byte[]{1,2});
iCountErrors++;
printerr( "Error_10989! Expected exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_01099! Caught expectede exception, exc=="+iexc.Message);
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_16794! Incorrect exception thrown, exc=="+exc.ToString());
}
iCountTestcases++;
try {
sw2.Write('a');
iCountErrors++;
printerr( "ERror_1980f! Expected Exception not thrown");
} catch (ObjectDisposedException iexc) {
printinfo( "Info_1099g! Caught expected exception, exc=="+iexc.Message);
} catch (Exception exc) {
//.........这里部分代码省略.........
示例7: Main
static void Main(string[] args)
{
if ( args.Length != 3 ) {
Console.Error.WriteLine("Usage: mono tftp.exe [error|noerror] host file");
Environment.Exit(1);
}
int port = 7000;
bool error = false;
string host = args[1];
string file = args[2];
if ( args[0].Equals("error") )
error = true;
else if ( args[0].Equals("noerror") )
error = false;
else {
Console.Error.WriteLine("Must specify error or noerror.");
Environment.Exit(1);
}
int pos = 0;
FileStream fs = new FileStream(file, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
UdpClient client = new UdpClient(host, port);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] request = Request(file, error);
client.Send(request, request.Length);
while ( true ) {
byte[] receive = client.Receive(ref RemoteIpEndPoint);
if ( receive[1] == 5 ) Error(receive); // Check for an error message (opcode 05).
byte[] decoded = Decode(receive);
byte[] block = new byte[] { receive[2], receive[3] };
if ( decoded == null )
client.Send(Nack(block), 4);
else {
bw.Seek(pos, 0);
bw.Write(decoded);
bw.Flush();
pos += decoded.Length;
client.Send(Ack(block), 4);
if ( receive.Length < 516 ) break; // Last block is smaller than max (516).
}
}
}
示例8: runTest
public bool runTest()
{
Console.WriteLine(s_strTFPath + "\\" + s_strTFName + " , for " + s_strClassMethod + " , Source ver " + s_strDtTmVer);
int iCountErrors = 0;
int iCountTestcases = 0;
String strLoc = "Loc_000oo";
String strValue = String.Empty;
int[] iArrInvalidValues = new Int32[]{ -1, -2, -100, -1000, -10000, -100000, -1000000, -10000000, -100000000, -1000000000, Int32.MinValue, Int16.MinValue};
int[] iArrLargeValues = new Int32[]{ 10000, 100000 , Int32.MaxValue/200 , Int32.MaxValue/1000, Int16.MaxValue, Int32.MaxValue, Int32.MaxValue-1, Int32.MaxValue/2 , Int32.MaxValue/10 , Int32.MaxValue/100 };
try
{
BinaryWriter dw2 = null;
MemoryStream mstr = null;
Byte[] bArr = null;
StringBuilder sb = new StringBuilder();
Int64 lReturn = 0;
strLoc = "Loc_278yg";
mstr = new MemoryStream();
dw2 = new BinaryWriter(mstr);
dw2.Write("Hello, this is my string".ToCharArray());
iCountTestcases++;
for(int iLoop = 0 ; iLoop < iArrInvalidValues.Length ; iLoop++ ){
try {
lReturn = dw2.Seek(iArrInvalidValues[iLoop], SeekOrigin.Begin);
iCountErrors++;
printerr( "Error_17dy7! Expected exception not thrown");
} catch (IOException ) {
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_918yc! Incorrect exception thrown, exc=="+exc.ToString());
}
if(lReturn != 0) {
iCountErrors++;
printerr( "Error_2t8gy! Incorrect return value, lReturn=="+lReturn);
}
}
dw2.Close();
mstr = new MemoryStream();
dw2 = new BinaryWriter(mstr);
dw2.Write("Hello, this is my string".ToCharArray());
iCountTestcases++;
for(int iLoop = 0 ; iLoop < iArrLargeValues.Length ; iLoop++ ){
try {
lReturn = dw2.Seek(iArrLargeValues[iLoop], SeekOrigin.Begin);
if(lReturn != iArrLargeValues[iLoop]) {
iCountErrors++;
printerr( "Error_43434! Incorrect return value, lReturn=="+lReturn);
}
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_9880! Incorrect exception thrown, exc=="+exc.ToString());
}
}
dw2.Close();
strLoc = "Loc_093uc";
mstr = new MemoryStream();
dw2 = new BinaryWriter(mstr);
dw2.Write("012345789".ToCharArray());
iCountTestcases++;
try {
lReturn = dw2.Seek(3, ~SeekOrigin.Begin);
iCountErrors++;
printerr( "Error_109ux! Expected exception not thrown");
} catch (ArgumentException) {
} catch (Exception exc) {
iCountErrors++;
printerr( "Error_190x9! Incorrect exception thrown, exc=="+exc.ToString());
}
dw2.Close();
strLoc = "Loc_98yct";
mstr = new MemoryStream();
dw2 = new BinaryWriter(mstr);
dw2.Write("0123456789".ToCharArray());
lReturn = dw2.Seek(0, SeekOrigin.Begin);
iCountTestcases++;
if(lReturn != 0) {
iCountErrors++;
printerr( "Error_9t8vb! Incorrect return value, lReturn=="+lReturn);
}
dw2.Write("lki".ToCharArray());
dw2.Flush();
bArr = mstr.ToArray();
sb = new StringBuilder();
for(int i = 0 ; i < bArr.Length ; i++)
sb.Append((Char)bArr[i]);
iCountTestcases++;
if(!sb.ToString().Equals("lki3456789")) {
iCountErrors++;
printerr( "Error_837sy! Incorrect sequence in stream, sb=="+sb.ToString());
}
dw2.Close();
strLoc = "Loc_29hxs";
mstr = new MemoryStream();
dw2 = new BinaryWriter(mstr);
dw2.Write("0123456789".ToCharArray());
lReturn = dw2.Seek(3, SeekOrigin.Begin);
iCountTestcases++;
if(lReturn != 3) {
iCountErrors++;
printerr( "Error_209gu! Incorrect return value, lReturn=="+lReturn);
//.........这里部分代码省略.........
示例9: SetBoolValue
public static bool SetBoolValue(string ValueName, bool ValueToSet, string ConfigFileName)
{
try
{
string SettingsPath = Application.dataPath.Remove(Application.dataPath.LastIndexOf("/")) + "/ProjectSettings/" + ConfigFileName + ".asset";
FileStream fs;
BinaryReader br;
fs = File.Open(SettingsPath, FileMode.Open);
br = new BinaryReader(fs);
// Read the unsigned int at offset 0x0C in the file.
// This contains the offset at which the setting's numerical values are stored.
br.BaseStream.Seek(0x0C, SeekOrigin.Begin);
// For some reason, the offset is Big Endian in the file.
int SettingsOffset = GetBigEndianIntFromBinaryReader(br);
// In the file, we start with 0x14 bytes, then a string containing the unity version,
// then 0x0C bytes, then a string containing the base class name, followed by a string containing "base".
string tempStr;
br.BaseStream.Seek(0x14, SeekOrigin.Begin);
tempStr = GetStringFromBinaryReader(br); // Unity Version
br.BaseStream.Seek(0x0C, SeekOrigin.Current);
tempStr = GetStringFromBinaryReader(br); // Config file Name
if (tempStr != ConfigFileName)
{
// File format has changed, return error
return false;
}
tempStr = GetStringFromBinaryReader(br); // "Base"
if (tempStr != "Base")
{
// File format has changed, return error
return false;
}
// This string is then followed by 24 bytes
br.BaseStream.Seek(24, SeekOrigin.Current);
// We then have a series of String (type), String (variable name), and 24 bytes
// We can use the type of the settings before the field we are looking for to
// find its offset after SettingsOffset.
while (br.BaseStream.Position < br.BaseStream.Length)
{
string SettingType = GetStringFromBinaryReader(br);
string SettingName = GetStringFromBinaryReader(br);
if (SettingName == ValueName)
{
break;
}
br.BaseStream.Seek(24, SeekOrigin.Current);
if (GetSizeofTypeByString(SettingType) == -1)
{
// File format has changed, return error
return false;
}
SettingsOffset += GetSizeofTypeByString(SettingType);
}
// Set the setting in the file
BinaryWriter bw = new BinaryWriter(fs);
bw.Seek(SettingsOffset, SeekOrigin.Begin);
bw.Write(ValueToSet ? (byte)1 : (byte)0);
bw.Close();
fs.Close();
}
catch (Exception)
{
// Error happened
return false;
}
// Success!
return true;
}
示例10: WriteSaveData
private static void WriteSaveData(Action<Action<int, byte[]>> writeActions)
{
using (var file = new BinaryWriter(File.Open(GetFilePath(), FileMode.OpenOrCreate, FileAccess.Write)))
{
writeActions((offset, data) =>
{
if (data != null)
{
file.Seek(offset, SeekOrigin.Begin);
file.Write(data);
}
});
}
}
示例11: DrawImage
private void DrawImage(VideoFrameType type)
{
Stream str = new MemoryStream();
BinaryWriter writer = new BinaryWriter(str);
// LITTLE ENDIAN!!
writer.Write(new byte[] { 0x42, 0x4D });
writer.Write((int)(type.managedData.Length + 0x36));
writer.Write((int)0);
writer.Write((int)0x36);
writer.Write((int)40);
writer.Write((int)type.width);
writer.Write((int)type.height);
writer.Write((short)1);
writer.Write((short)24);
writer.Write((int)0);
writer.Write((int)type.managedData.Length);
writer.Write((int)3780);
writer.Write((int)3780);
writer.Write((int)0);
writer.Write((int)0);
for (int y = type.height - 1; y >= 0; y--)
writer.Write(type.managedData, y * type.linesize, type.width * 3);
writer.Flush();
writer.Seek(0, SeekOrigin.Begin);
Bitmap bitmap = new Bitmap(str);
g.DrawImage(bitmap, 0, 0, mainDraw.WidthRequest, mainDraw.HeightRequest);
writer.Close();
}