일반적인 혼란이 있습니다. 당신은 모든 일을 올바르게하고 있습니다. 메시지 길이는 160 문자 (7 비트 GSM 03.38), 140 문자 (8 비트 라틴 문자), 70 문자 (16 비트 UCS-2) 일 수 있습니다. 알림 : 160 * 7 == 140 * 8 == 70 * 16. 메시지 헤더 본문에 총 부품 번호 및 부품 색인과 같은 추가 정보 인 긴 메시지를 분리하면 소위 사용자 데이터 헤더 (UDH). 이 헤더도 발생합니다. 그래서, UDH하면 153 개 GSM의 문자 (7 비트), 134 개 문자/바이트 (8 비트), 페이로드 또는 67 2 바이트 유니 코드 문자 왼쪽 (16 비트)
도 참조 http://www.nowsms.com/long-sms-text-messages-and-the-160-character-limit
UDH 귀하의 경우와 마찬가지로 Contextated 메시지 8 비트에 대해 6 바이트 길이입니다.
UDH 구조
0x05: Length of UDH (5 bytes to follow)
0x00: Concatenated message Information Element (8-bit reference number)
0x03: Length of Information Element data (3 bytes to follow)
0xXX: Reference number for this concatenated message
0xYY: Number of fragments in the concatenated message
0xZZ: Fragment number/index within the concatenated message
Total message length, bits: 160*7 = 140*8 = 1120
UDH length, bits: 6*8 = 48
Left payload, bits: 1120-48 = 1072
For GSM 03.38 you get 1072/7 = 153 GSM (7-bit) chars + 1 filling unused bit.
For Latin you get 1072/8 = 134 (8-bit) chars.
For UCS-2 you get 1072/16 = 67 (16-bit) chars.
는 GSM 153 개에 문자를 볼 수있는 바와 같이 134 바이트 마이너스 1 비트 같다. 아마도이 134 개의 문자는 자바가 당신에게보고하는 것입니다. 그러나 일단 긴 텍스트 메시지를 분리하면 텍스트와 UDH를 모두 포함하는 바이너리 메시지로 끝납니다. 그리고 메시지를 바이너리로 처리해야합니다. 바이너리 덤프를 생성 된 부분에서 제거하고 조사하는 것이 좋습니다. 짧거나 긴 SMS 모두를 보내는