私はCを初めて使用するので、「明らかな問題」についてお詫び申し上げます。
バッファで16進値のセットを検索しようとしています。複数のセットを検索する必要があるため、関数に入れようとしています。
これが私がこれまでに持っているコードです:
#define bin_buff_size (1024 * 1500)
unsigned char *bin_buff;
int i, hex_location, reset_i, hex_i, fix_location_1, buff_size;
unsigned char hex_string_search_1[] = {0x5e, 0x00, 0x75, 0x0d, 0x68, 0xb4, 0x2c, 0x63};
<other code here>
int get_location_from_buffer(unsigned char *needle, unsigned char *haystack, size_t haystack_size) {
// Find the location of the hex-values in the buffer
for (i = 0; i < haystack_size; i++) {
// Reset hex_value because I will need to do this for multiple sets of hex values
for (reset_i = 0; reset_i <= 7; reset_i++) {
hex_value[reset_i] = 0x00;
}
// Set hex_value equal to the next section of the haystack
for (hex_i = 0; hex_i <= 7; hex_i++) {
hex_value[hex_i] = haystack[i + hex_i];
printf("hex_value[%i] = %s\n",hex_i,hex_value[hex_i]); // Print the resulting hex-value for this sub-location
}
printf("hex_value = %s\n",hex_value); // Print the entire hex_value
// Check if needle equals haystack, and if so, return the resulting location
if (needle == hex_value){
printf("Found the first value at %i", i);
}else{
printf("Havent found the first value yet!\n");
}
}
return i;
}
fix_location_1 = get_location_from_buffer(hex_string_search_1, bin_buff, buff_size);
私が抱えている問題は、これが私の出力であるということです。
hex_value[0] = (null)
hex_value[1] = (null)
hex_value[2] = (null)
hex_value[3] = (null)
hex_value[4] = (null)
hex_value[5] = (null)
hex_value[6] = (null)
hex_value[7] = (null)
hex_value =
Havent found the first value yet!
<The above is repeated multiple times>
次のようになります。
hex_value[hex_i] = haystack[i + hex_i];
私が思っているように、実際にはバッファからデータをプルしていません。誰かが私が間違っていることを指摘することができますか?