작곡 프로그램 개발 일지 24

2023. 11. 16. 20:38GAME/Unity

흠! 어제의 이론대로면 가능할것 같았는데 실패하였다. 

 

일단 계속 디버깅을 통해서 타고들어갔는데, 심각한 문제를 발견

 

생각지도 못한 델타타임을 변환해 주는 함수가 잘못되었던것... 지금까지 두자릿수를 넘지 않은 델타타임을 적용해서 눈치를 못챘다;;  

 

여기서 거꾸로(MSB 부터 LSB) 델타타임을 쌓았는데 Reverse를 안해주어서 계속 거꾸로 들어가서 이벤트를 이상하게 인식하는 문제였다.

 

 

그러면 array로 변환하기 위해서 Getbyte함수를 써서....  

 

근데 또 생각해보면 BitConverter.GetBytes는 시스템 엔디안 방식에 따라 다르게 나온다고 되어있으니,

convertDelta를 넣으면 리틀 엔디안방식에서는 거꾸로 나올것이고 빅 엔디안 방식에서는 그대로 나올것.

 

그렇다면 빅 엔디안일때 Reverse를 해주는게 맞음

 

근데 이렇게 할 경우, 저번에 발생한 공백의 문제 생김....(4바이트를 채우지 못한 칸은 다 0으로 처리됨)

예를 들어서, 240이라는 값을 델타타임 가변 바이트 규칙에 맞게 변환시키고 GetByte함수를 실행하면

 

129,112,0,0 이라는 바이트 배열이 나온다. 근데 이 0이 왜 위험하나면 int로 변환할때 0까지 포함되서 이런식으로 될 수도 있음

 

 

? 근데 뭔가 이상함을 느낌 .. 다시 다시

 

위에 GetByte함수는 멀쩡함.. 엔디안에 상관없이 뒤집기 필수 하지만?

 

뒤집는다면 이렇게 됨... 이러면 리틀 엔디안 방식에서는 0이 작은자리부터 시작이니까 0,0,112,129

 

즉 81700000 이 되겠지. 그니까 뒤집기 전에 0을 날리는 작업 필요! --> 해결은 같았지만 원인은 잘못분석했다.

 

너무 헷갈리네;;

 

 

이렇게 체크 된 바이트 배열에?

 

Reverse를 해준다면.. 112,127이 되니까 81 70 이 될것.

 

저 CheckGetBytes 함수를 좀 수정했는데 

여기에 지장이 또 가니까 수정

델타타임을 계산할때는 Bigendian 방식이니까 뒤집어서 읽으면 됨! 굿.

'GAME > Unity' 카테고리의 다른 글

작곡 프로그램 개발 일지 25  (0) 2023.11.17
작곡 프로그램 개발 일지 23  (0) 2023.11.15
작곡 프로그램 개발 일지 22  (0) 2023.11.13