में कैरेक्टर स्ट्रिंग पाएं मेरे पास एक बाइनरी फ़ाइल है जिसे मैंने NSData ऑब्जेक्ट का उपयोग करके लोड किया है। क्या वर्णों के अनुक्रम का पता लगाने का कोई तरीका है, उदाहरण के लिए, 'abcd', उस बाइनरी डेटा के भीतर और संपूर्ण फ़ाइल को स्ट्रिंग में परिवर्तित किए बिना ऑफ़सेट लौटाएं? ऐसा लगता है कि यह एक साधारण जवाब होना चाहिए, लेकिन मुझे यकीन नहीं है कि यह कैसे करें। कोई विचार?बाइनरी डेटा
मैं इसे आईओएस 3 पर कर रहा हूं इसलिए मेरे पास -rangeOfData:options:range:
उपलब्ध नहीं है।
मैं स्ट्रैस्ट्र का सुझाव देने के लिए इसे सोलह ओटो तक पुरस्कार देने जा रहा हूं। मैं चला गया और सी फंक्शन स्ट्रस्ट्र के लिए स्रोत कोड मिला और इसे एक निश्चित लंबाई बाइट सरणी पर काम करने के लिए फिर से लिखना - जो संयोग से चार सरणी से अलग है क्योंकि यह शून्य समाप्त नहीं हुआ है।
- (Byte*)offsetOfBytes:(Byte*)bytes inBuffer:(const Byte*)buffer ofLength:(int)len;
{
Byte *cp = bytes;
Byte *s1, *s2;
if (!*buffer)
return bytes;
int i = 0;
for (i=0; i < len; ++i)
{
s1 = cp;
s2 = (Byte*)buffer;
while (*s1 && *s2 && !(*s1-*s2))
s1++, s2++;
if (!*s2)
return cp;
cp++;
}
return NULL;
}
यह बाइट्स की पहली घटना, बात मैं तलाश कर रहा हूँ, बफर में, बाइट सरणी बाइट्स शामिल करना चाहिए करने के लिए एक सूचक रिटर्न: यहाँ कोड मैं के साथ समाप्त हो गया है।
मैं इस तरह इसे कहते:
// data is the NSData object
const Byte *bytes = [data bytes];
Byte* index = [self offsetOfBytes:tag inBuffer:bytes ofLength:[data length]];
कोड जो आपने ऑफसेट के लिए पोस्ट किया है ओफबाइट्स: इनबफर: लम्बाई: यदि आपके डेटा में वास्तव में नल शामिल हो सकते हैं तो बहुत सारे मुद्दे होंगे (मूल स्ट्रस्ट्र() छोड़ दिया गया है)। कम से कम, आपको बाइट्स की लंबाई में गुजरने की आवश्यकता है, क्योंकि इस फ़ंक्शन को यह नहीं पता है कि यह कब तक होना चाहिए। –
अरे। प्रतिक्रिया के लिए धन्यवाद। मैं लम्बाई में पैरामीटर के लिए लंबाई में गुजर रहा हूं: पैरामीटर, इसलिए मुझे यकीन नहीं है कि आपका क्या मतलब है। धन्यवाद। –
आप दो बाइट पॉइंटर्स में गुजर रहे हैं, लेकिन केवल एक लंबाई। इसका अर्थ यह है कि आपका कोड संभव नहीं हो सकता है कि 'बाइट्स' और 'बफर' दोनों कितने समय तक हैं, जिसका अर्थ है कि आप अपनी खोज में उनमें से किसी एक के अंत को चलाने का खतरा हैं। –