여기 이진 정수 변환 처리, 내 이전 대답 : How to manipulate and represent binary numbers in C++
는 대부분의 경우, 사람들은 이러한 문자열을 한 번에 하나 개의 비트를 만들 수있는 루프를 쓸 수 있지만 그것은 운동 인에서 떨어져 (조금 무의미 비트 연산). 이것은 니블 상위 소요
std::string StringToBinary(const string & s)
{
static const char lookup[16][5] = {
"0000", "0001", "0010", "0011", 0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", 1100", "1101", "1110", "1111"
};
std::string bin;
bin.reserve(s.size()*8);
for(i = 0; i < s.size(); i++) {
bin.append(lookup[(unsigned char)s[i] >> 4], 4);
bin.append(lookup[(unsigned char)s[i] & 0x0f], 4);
}
return bin;
}
및 (s[i]>>4
)과 하위 : 당신은 하나의 문자에 위의 내 대답을 적용하면 절반 바이트를 나타내는 조회 테이블을 사용하여 손으로 컴팩트하게 그것을 할 수 있습니다 nybble (s[i]&0x0f
) 각각을 4 비트 문자열로 변환합니다. 원하는 경우 8 비트 룩업 테이블을 사용할 수 있지만 코드를 생성하거나 동적으로 생성하는 작은 프로그램을 작성하고자 할 수 있습니다.
위의 솔루션은 비트 연산을 많이하지 않고도 더 쉽습니다.
문자열을 색인하기 만하면되는 것처럼 들립니다. – chris
무엇을 의미합니까? – user2419691
'std :: string' 또는'char []'가 작동하지 않습니까? – 0x499602D2