답변
한가지 가능성 Enumerable.Select
를 사용된다 :
byte[] bytes;
var shorts = bytes.Select(b => (short)b).ToArray();
또 Array.ConvertAll
을 사용하는 것이다
byte[] bytes;
var shorts = Array.ConvertAll(bytes, b => (short)b);
원래 추천 단어 (나중에 두 번째 단어를 추가하기 전에)는 다소 비효율적입니다. –
또 다른 옵션은 bytes.Cast
실제로이 경우 InvalidCastException이 발생합니다. 간단한 설명은이 코드가 암시 적으로 박스형 바이트가 유효한 언 박싱 연산이 아닌 short에 언 박싱되도록하는 것입니다. 자세한 내용은 http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception을 참조하십시오. – jason
short[] wordArray = Array.ConvertAll(byteArray, (b) => (short)b);
byte[] bytes;
var shorts = bytes.Select(n => System.Convert.ToInt16(n)).ToArray();
매우 비효율적입니다. 모든 요소에 대해 convert.ToInt16()을 호출하여 임시 목록에 저장 한 다음 새 배열에 복사합니다. –
예, 비효율적입니다. 나는 그것이 더 안전하다고 생각하고있다. –
캐스팅보다 안전합니까? 바이트 간 변환은 항상 작동합니다. 예외를 throw 할 수는 없습니다 –
shorthard 두 바이트의 화합물이다. 파일에 모든 단락을 진정한 반바지로 쓰고 있다면 이러한 변환이 잘못되었습니다.
short s = (short)(bytes[0] | (bytes[1] << 8))
short value = BitConverter.ToInt16(bytes, index);
사용 Buffer.BlockCopy : 당신은 같은 것을 사용하여, 진정한 짧은 값을 얻기 위해 2 바이트를 사용해야합니다.
바이트 배열의 절반 크기의 짧은 배열을 생성하고, 상기 바이트 데이터를 복사 그것은 훨씬 빠른 방법short[] sdata = new short[(int)Math.Ceiling(data.Length/2)];
Buffer.BlockCopy(data, 0, sdata, 0, data.Length);
.
해결책은 제가 누릴 자격이 없지만 지금 당장 필요합니다! – DaMachk
나는 모른다. 그러나 나는이 질문에 또 다른 aproach를 기대했을 것이다. 반바지의 순서로 바이트 시퀀스를 변환 할 때, 내가 그것을 @ 피터처럼했을 것 는 파일의 바이트 엔디안에 따라
short s = (short)((bytes[0] << 8) | bytes[1])
short s = (short)(bytes[0] | (bytes[1] << 8))
또는
했다.그러나 OP에서는 파일의 단락 또는 파일의 정의에 대해 언급하지 않았습니다. 그의 경우 두 배의 메모리가 필요하기 때문에 바이트 배열을 짧은 배열로 변환하는 것은 의미가 없으며 다른 곳에서 사용되는 경우 바이트를 short로 변환해야하는지는 의심 스럽습니다.
- 1. 데이터 배열을 복사하지 않고 short 배열로 변환
- 2. 문자열 배열을 바이트 배열로 변환
- 3. 샘플이있는 배열을 바이트 배열로 변환
- 4. Java : 바이트 배열을 바이트 배열로 변환
- 5. Java - 오디오의 바이트 배열을 정수 배열로 변환
- 6. 바이트 배열을 C에서 double 변환 #
- 7. Java에서 short 배열로 바이트 배열에 액세스하는 방법
- 8. VB.NET에서 double 배열을 바이트 배열로 변환 하시겠습니까?
- 9. 바이트 배열을 비트 배열로 변환 하시겠습니까?
- 10. tiff 바이트 배열을 C 바이트로 itextsharp를 사용하여 바이트 배열로 변환
- 11. 테이블을 바이트 배열로 변환
- 12. Java 문자열을 바이트 배열로 변환
- 13. 배열을 다차원 배열로 변환
- 14. C에서 바이트 배열로 구조를 변환하는 방법은 무엇입니까?
- 15. 구조체를 .NET의 바이트 배열로 변환
- 16. IronPython - 바이트 배열로 int 변환
- 17. 클래스를 바이트 배열로 변환 + C#
- 18. 바이트 배열을 이스케이프 문자열로 변환
- 19. 안드로이드 - 바이트 rgb_565 배열을 argb 또는 rgb 배열로 변환
- 20. 그러나 바이트 배열로 메모리를 변환 하시겠습니까?
- 21. 이미지를 Matlab의 png 바이트 배열로 변환
- 22. 이중 배열을 IComparable 배열로 변환
- 23. VBA 배열을 JSON 배열로 변환
- 24. long 배열을 문자열 배열로 변환
- 25. 연관 배열을 객체 배열로 변환
- 26. C에서 4 바이트 배열을 float로 변환하는 문제 #
- 27. 바이트 배열을 double로 변환 할 때의 문제
- 28. 델파이에서 바이트 배열을 정수로 변환
- 29. 바이트 배열을 wav 파일로 변환
- 30. 문자 배열을 바이트 배열로 변환하고 다시 다시
1 바이트를 1로, 2 바이트를 1로 변환 하시겠습니까? – maxwellb