题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
#include <iostream> #include <string.h> using namespace std; void toten(string s){ long long len=s.length(),ans=0,t; char c; for(int i=0;i<len;i++){ t=0; while(1){ c=s[i]; if(c=='.'||i==len) break; t=t*10+s[i]-'0'; i++; } ans=ans*256+t; } cout<<ans<<endl; return; } void recall(long long num,int t){ if(num==0) return; recall(num/256,1); cout<<num%256; if(t) cout<<'.'; } void totwo(string s){ long long len=s.length(),ans=0,t; char c; t=0; for(int i=0;i<len;i++) t=t*10+s[i]-'0'; recall(t,0); return; } int main() { string s; cin>>s; toten(s); cin>>s; totwo(s); return 0; } // 64 位输出请用 printf("%lld")
要用long long