c를 안녕 내가 C 번호의 클라이언트 응용 프로그램을 개발하고있어 서버가 C++로 작성INT는 [] 문자열 #
서버가 사용
inline void StrToInts(int *pInts, int Num, const char *pStr)
{
int Index = 0;
while(Num)
{
char aBuf[4] = {0,0,0,0};
for(int c = 0; c < 4 && pStr[Index]; c++, Index++)
aBuf[c] = pStr[Index];
*pInts = ((aBuf[0]+128)<<24)|((aBuf[1]+128)<<16)|((aBuf[2]+128)<<8)|(aBuf[3]+128);
pInts++;
Num--;
}
// null terminate
pInts[-1] &= 0xffffff00;
}
은 []
int로하는 문자열로 변환 내 C# 클라이언트에서는 내가받을 :
int[4] { -14240, -12938, -16988, -8832 }
는 어떻게 문자열로 다시 배열을 변환합니까? 안전하지 않은 코드 (예 : 포인터)를 사용하고 싶지 않습니다. 내 시도로 인해 읽을 수없는 문자열이 생성되었습니다.
편집 : 여기 내 approch 중 하나입니다 : 내가 엔디안의 돌볼 필요하지만 서버로 내 로컬 컴퓨터와 너무 서버에서 실행되는 알고
private string IntsToString(int[] ints)
{
StringBuilder s = new StringBuilder();
for (int i = 0; i < ints.Length; i++)
{
byte[] bytes = BitConverter.GetBytes(ints[i]);
for (int j = 0; j < bytes.Length; j++)
s.Append((char)(bytes[j] & 0x7F));
}
return s.ToString();
}
, 나는이 있다고 가정 문제가 아니다.
또 다른 시도는 명시 적 레이아웃과 정수 및 문자에 대해 동일한 FieldOffset과 함께 구조체를 사용하는 것이지만 작동하지 않습니다. 당신은 쉼표로 구분 된 문자열이 방법을 만들 수 있습니다
결과 문자열은 어떻게 표시되어야합니까? –
지금까지 시도한 것은 무엇입니까? 코드를 공유하십시오. 이미 비트가 모두 바뀌는 것을 기대하고 있습니다. – sll
문자열 또는 단일 문자열 (csv) 배열을 반환 하시겠습니까? –