मेरे पास एक हेक्स स्ट्रिंग है और इसे सी में एसीआई स्ट्रिंग में परिवर्तित करना चाहते हैं। मैं इसे कैसे पूरा कर सकता हूं ??हेक्स से एसीआई स्ट्रिंग रूपांतरण
उत्तर
आप एक ही समय में 2 (हेक्स) वर्ण ले ... तो पूर्णांक मूल्य गणना और उसके बाद की तरह चार रूपांतरण बनाने की जरूरत है ...
char d = (char)intValue;
हर के लिए ऐसा करते हैं alphabe तरह
#include <stdio.h>
#include <string.h>
int hex_to_int(char c){
int first = c/16 - 3;
int second = c % 16;
int result = first*10 + second;
if(result > 9) result--;
return result;
}
int hex_to_ascii(char c, char d){
int high = hex_to_int(c) * 16;
int low = hex_to_int(d);
return high+low;
}
int main(){
const char* st = "48656C6C6F3B";
int length = strlen(st);
int i;
char buf = 0;
for(i = 0; i < length; i++){
if(i % 2 != 0){
printf("%c", hex_to_ascii(buf, st[i]));
}else{
buf = st[i];
}
}
}
कुछ वर्ण: हेक्स स्ट्रिंग
इस काम करता है, तो स्ट्रिंग वर्ण केवल 0-9A-एफ हैं 2chars ts i-o को संबंधित ASCII वर्णों में परिवर्तित नहीं किया जा सका। स्ट्रिंग '6631653064316f30723161' की तरह फेडोरा से मेल खाता है। लेकिन यह fedra
बस हेक्स_to_int() को थोड़ा सा संशोधित करता है और यह सभी पात्रों के लिए काम करेगा। संशोधित समारोह
int hex_to_int(char c)
{
if (c >= 97)
c = c - 32;
int first = c/16 - 3;
int second = c % 16;
int result = first * 10 + second;
if (result > 9) result--;
return result;
}
अब यह सभी वर्णों के लिए काम करेंगे की कोशिश है।
strtol()
यहां आपका मित्र है। तीसरा पैरामीटर संख्यात्मक आधार है जिसे आप परिवर्तित कर रहे हैं।
उदाहरण: (: `" F00BA4 "` जैसे) ascii स्ट्रिंग का एक विशेष मामला
#include <stdio.h> /* printf */
#include <stdlib.h> /* strtol */
int main(int argc, char **argv)
{
long int num = 0;
long int num2 =0;
char * str. = "f00d";
char * str2 = "0xf00d";
num = strtol(str, 0, 16); //converts hexadecimal string to long.
num2 = strtol(str2, 0, 0); //conversion depends on the string passed in, 0x... Is hex, 0... Is octal and everything else is decimal.
printf("%ld\n", num);
printf("%ld\n", num);
}
इसलिए कोई 'itoa' ... – Yvain
@Yvain no। शुरुआत के लिए, 'itoa()' के साथ रूपांतरण गलत तरीका है। 'atoi()' केवल दशमलव इनपुट स्वीकार करता है। 'atof' हेक्साडेसिमल स्वीकार करता है (उपरोक्त दूसरे उदाहरण में' 0x "के साथ शुरू करने की आवश्यकता है, और केवल सी 99 या बाद में काम करता है (यदि यह मायने रखता है) – Baldrickk
- 1. एफ # बाइट [] -> हेक्स -> स्ट्रिंग रूपांतरण
- 2. एसीआई
- 3. int से हेक्स स्ट्रिंग
- 4. हेक्स से स्ट्रिंग
- 5. लैटिन -1 से एसीआई
- 6. हेक्स रूपांतरण के लिए सामान्य लिस्पी पूर्णांक
- 7. उद्देश्य-सी दशमलव से बेस 16 हेक्स रूपांतरण
- 8. रूपांतरण स्ट्रिंग से अद्वितीय पहचानकर्ता
- 9. स्ट्रिंग से डेटाटाइम रूपांतरण जावास्क्रिप्ट
- 10. हेक्स को सामान्य लिस्प में दशमलव रूपांतरण
- 11. पायथन: एक हेक्स स्ट्रिंग
- 12. स्ट्रिंग रूपांतरण
- 13. हेक्स स्ट्रिंग प्रतिस्थापन sed
- 14. स्ट्रिंग से हेक्स और हेक्स में स्ट्रिंग को कैसे परिवर्तित करें?
- 15. बाइनरी से हेक्स सी #
- 16. हेक्स स्ट्रिंग को वापस चार
- 17. जावास्क्रिप्ट कनवर्टिंग स्ट्रिंग मान हेक्स
- 18. हेक्स स्ट्रिंग को बाइनरी स्ट्रिंग में बदलें
- 19. स्ट्रिंग से चार में रूपांतरण - सी ++
- 20. स्ट्रिंग प्रारूप और हेक्स वर्ण
- 21. पीएचपी स्ट्रिंग हेक्स के लिए
- 22. सी ++ पूर्णांक स्ट्रिंग रूपांतरण
- 23. जावा/एंड्रॉइड स्ट्रिंग टू कलर रूपांतरण
- 24. हेक्स
- 25. हेक्स से 64 हस्ताक्षर दशमलव
- 26. पाइथन रेगेक्स को स्ट्रिंग में गैर-एसीआई अक्षरों को निकटतम एसीआई समकक्षों में परिवर्तित करने के लिए
- 27. रूपांतरण विफल जब चरित्र स्ट्रिंग
- 28. डबल स्ट्रिंग रूपांतरण और लोकेल
- 29. जावा: एक स्ट्रिंग से यूटीएफ -8 हेक्स मान प्राप्त करें?
- 30. लंबी हेक्स स्ट्रिंग से पाइथन बाइट ऑब्जेक्ट कैसे बनाएं?
एक हेक्स स्ट्रिंग नहीं है? या ईबीसीडीआईसी का उपयोग कर रहे हैं? :) – pmg