2013-06-11 2 views
5

델파이를 사용하여 바이트 단위로 .txt 파일에서 데이터를 가져옵니다. 각 바이트에 대해 해당 바이트의 시작과 끝 비트를 서로 바꿔야합니다. 나는 몇 시간 동안 Google을 검색해 왔지만 델파이의 바이트 변수 내부에서 비트를 조작하는 것에 대한 참조를 찾을 수 없습니다. 어떤 아이디어?델파이에서 바이트 변수 조작 비트

+0

가장 빠른 방법은 조회 표를 사용하는 것입니다. –

답변

10
b := (b and $7E) or (b shr 7) or (b shl 7); 

먼저 우리는 중간 6 비트를 유지 한 다음 레지스터 쉬프트 연산에서 MSB와 LSB 비트를 교체합니다.

델파이의 비트 조작은 재미 있습니다. 다양한 옵션이 있으며 이는 곧바로 사용할 수있는 솔루션입니다. 데이비드 (David)는 더 빨라질 수있는 LUT 솔루션을 제안합니다.

전체 바이트를 비트 반영하는 것과 관련하여 흥미로운 비슷한 질문이 있습니다 (How can I bit-reflect a byte in Delphi? 참조).

+0

이것은 * 해결책입니다. 첫 번째 피연산자는 MSB와 LSB가 아닌 b이며 두 번째 피연산자는 초기 MSB (현재 LSB 위치)이고 세 번째 피연산자는 초기 LSB (현재 MSB 위치)입니다. 물론, '또는'결과는 MSB-LSB 스왑과 함께 'b'입니다. –

+0

또한 룩업 테이블을 찾으려면 위의 한 줄짜리 테이블을 사용하여 테이블을 생성 할 수 있습니다! –

+0

LU RD의 완벽한 답변! 안드레아스 설명 주셔서 감사합니다! – HHH