16 진수의 단어가있는 파일이 있습니다.파일에서 부호있는 바이트를 읽는 방법
기본적으로 파일을 배열 sbyte[]
으로 읽고 싶습니다.
은 내가 어떻게 서명 바이트 배열에 읽어
byte[] bt = File.ReadAllBytes("fileName");
하지만를 사용하여 byte[]
로 읽을 수 아마도 알아? 누군가 내 아이디어를 줄 수 있습니까?
16 진수의 단어가있는 파일이 있습니다.파일에서 부호있는 바이트를 읽는 방법
기본적으로 파일을 배열 sbyte[]
으로 읽고 싶습니다.
은 내가 어떻게 서명 바이트 배열에 읽어
byte[] bt = File.ReadAllBytes("fileName");
하지만를 사용하여 byte[]
로 읽을 수 아마도 알아? 누군가 내 아이디어를 줄 수 있습니까?
파일 얼마나 큰 ? 이 File.ReadAllBytes
괜찮 충분히 작은 경우, 당신은 아마 수행 할 수 있습니다
byte[] bt = File.ReadAllBytes("fileName");
sbyte[] sbt = new sbyte[bt.Length];
Buffer.BlockCopy(bt, 0, sbt, 0, bt.Length);
솔직히 있지만 : 나는 그것은 byte[]
로 유지하는 것 다른 곳에서 서명/부호에 대해 우려하고있다.
:
byte[] bt = File.ReadAllBytes("fileName");
sbyte[] sbytes = Array.ConvertAll(bt, b => (sbyte)b);
아니면 sbyte
들로 직접 파일을 읽을 선호하는 경우, 당신이 뭔가를 할 수 있습니다 :
static IEnumerable<sbyte> ReadSBytes(string path)
{
using (var stream = File.OpenRead(path))
using (var reader = new BinaryReader(stream))
{
while (true)
{
sbyte sb;
try
{
sb = reader.ReadSByte();
}
catch(EndOfStreamException)
{
break;
}
yield return sb;
}
}
}
sbyte[] sbytes = ReadSBytes("fileName").ToArray();
'return sb;는'yield return sb;'가 될 것입니까? –
@AshBurlaczenko, 네, 저의 의도였습니다 ... 고쳐주었습니다, 고마워요! –
답장을 보내 주셔서 감사합니다. 파일의 크기는 약 4000 kb입니다. 당신이 볼 수있는 작은 파일입니다. BlockCopy 메서드에 관해서도, float []에서 sbyte []로 데이터를 이동하는 데 사용할 수 있습니까 (예 : var byteArray = new byte [data.Length * 4]; Buffer.BlockCopy (data, 0, byteArray, 0, byteArray.Length); – user3535716
@ user3535716 예. 멀티 바이트 데이터를 처리 할 때 엔디안을 알아야합니다. –