Android c++;-winsock上的蓝牙,如何删除字节顺序标记

Android c++;-winsock上的蓝牙,如何删除字节顺序标记,android,c++,bluetooth,winsock2,Android,C++,Bluetooth,Winsock2,我想通过蓝牙将一些stringdata从Android设备传输到Windows笔记本电脑。 使用winsock2提供的蓝牙代码示例,我能够使用以下代码传输数据。不幸的是,我在发送的字符串的开头收到一个字节顺序标记。当然,我可以简单地删除前四个字节,但这对我来说似乎有点脏。我还有别的选择吗 C++用于接收的代码(稍微修改以提高可读性->无错误处理无注释等) 好吧,我现在觉得自己很笨。在同类java环境中工作了几年,这让我完全忘记了java在使用unicodecharset作为参数调用getByte

我想通过蓝牙将一些stringdata从Android设备传输到Windows笔记本电脑。 使用winsock2提供的蓝牙代码示例,我能够使用以下代码传输数据。不幸的是,我在发送的字符串的开头收到一个字节顺序标记。当然,我可以简单地删除前四个字节,但这对我来说似乎有点脏。我还有别的选择吗

C++用于接收的代码(稍微修改以提高可读性->无错误处理无注释等)


好吧,我现在觉得自己很笨。在同类java环境中工作了几年,这让我完全忘记了java在使用unicodecharset作为参数调用getBytes()时设置字节顺序标记。 在android端将
dataString.getBytes(Charsets.UTF_16)
更改为
dataString.getBytes(StandardCharsets.UTF_16LE)
(windows是little-endian)后,一切正常

ClientSocket = accept(LocalSocket, NULL, NULL);  
BOOL bContinue = TRUE; 
pszDataBuffer = (char *)HeapAlloc(GetProcessHeap(), 
                                  HEAP_ZERO_MEMORY, 
                                  CXN_TRANSFER_DATA_LENGTH); 
pszDataBufferIndex = pszDataBuffer; 
uiTotalLengthReceived = 0; 
while ( bContinue && (uiTotalLengthReceived < CXN_TRANSFER_DATA_LENGTH) ) { 
    iLengthReceived = recv(ClientSocket, 
                           (char *)pszDataBufferIndex, 
                           (CXN_TRANSFER_DATA_LENGTH - uiTotalLengthReceived), 
                           0); 

    switch ( iLengthReceived ) { 
    case 0: // socket connection has been closed gracefully 
        bContinue = FALSE; 
        break; 

    case SOCKET_ERROR: 
        wprintf(L"=CRITICAL= | recv() call failed. WSAGetLastError=[%d]\n", WSAGetLastError()); 
        bContinue = FALSE; 
        ulRetCode = CXN_ERROR; 
        break; 

    default:  
        pszDataBufferIndex += iLengthReceived; 
        uiTotalLengthReceived += iLengthReceived; 
        break; 
    } 
} 
if ( CXN_SUCCESS == ulRetCode ) { 
    pszDataBuffer[uiTotalLengthReceived] = '\0';
    wprintf(L"*INFO* | Received following data string from remote device:\n%s\n", (wchar_t *)pszDataBuffer); 
    closesocket(ClientSocket);
    ClientSocket = INVALID_SOCKET;                  
} 
OutputStream socketOutpuStream = socket.getOutputStream();
socketOutputStream.write(dataString.getBytes(Charsets.UTF_16));