-1
안녕 얘들 아 내 임무는 기본적으로 char에서 십진수를 얻는 것이다. 예를 들어, 입력 된 인수는 8751입니다. 어떻게 얻을 수있는 51 (유일한) 10 진수로 변환 할? 87 얻을 방법을 알고 또한 (0x8751 & 0xff) 16 진수 경우 51 가져 오는 방법을 알고. 인수에서 C++ 비트 시프트
그래서 내 프로그램의 출력은 다음과 같습니다(0x87 & 0x7f)*128 + (0x51)
또는
(135-128)*128 + 81
감사
코드 :
#include <iostream>
#include <cstdio>
int
main(int argc, char* argv[])
{
char* nums;
// long sum = 0;
for (int i = 1; i < argc; ++i)
{
nums=argv[i];
// long a;
// ::sscanf(argv[i], "%lx", &a); // read hex string and form long value
// sum += a; // same as 'sum = sum + a'
}
int len = strlen(nums);
if(len<=2){
unsigned long cur;
::sscanf(nums, "%lx", &cur);
if(cur<=128){
std::cout<<cur;
}
}
if(len=4){
unsigned long cur;
::sscanf(nums, "%lx", &cur);
char tr []= "0x";
//std:: cout << cur<<"\n";
unsigned long cur1 = nums & 0xff;
unsigned long cur2 = cur >> 8;
if(cur1 >128){
//std :: cout <<cur1<<"\n";
std::cout<<0;
}
else{
unsigned long result = (cur2 - 128)*128 + cur1;
std ::cout << result;
}
}
system("pause");
return 0;
}
'line 32 : error : 2 진 '연산자'에 'char *'및 'int'유형의 피연산자가 유효하지 않습니다. – user650654