#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
char *hex_key = "abcdef012345678";
long long key = strtoll( hex_key, NULL, 16 );
cout << key << endl;
}
on compilation:
g++ b.cpp
b.cpp: In function ‘int main()’:
b.cpp:7: warning: deprecated conversion from string constant to ‘char*’
output:
./a.out
773738358679819896
Is there anything I can do to get rid of the warning?
Also, the full hex_key is 9abcdef012345678 which is different from what I used in the above code because of the 9 at the beginning. The output of this is 9223372036854775807
which is different from a result shown on a webpage that calculates hexadecimal numbers. All the outputs for the other hex_key values are consistent with the calculating website. Why is this number different?
Also, in your first reply you gave me
Code:
unsigned char *cval = "123";
int val = 0;
int i;
for( i = 0; i < strlen( cval ); i++ )
{
val <<= 4;
val += cval[i] - '0';
}
printf( "%x\n", val );
and I am wondering why you subtract '0' and why you shift 4. Is it necessary to shift << by four each time you add a new hex digit?
---------- Post updated at 08:38 PM ---------- Previous update was at 12:56 PM ----------
ok, strtoull() was the function that gets the whole 16 hex digits. the unsigned long long type was what I should have been using.
Hi!
What is the way to get the binary representation of a IEEE 754 (like 0001110110001111010101100111001011100100101010111101) without using perl. Bash for example, would be fine.
I need to put that representation in a string for some operation and then to put that string back in a float.
... (3 Replies)
I came across a puzzle which I can not explain. The setup is SCO OpenServer 5.7 (32 bit OS) and native SCO compiler. double is 8 bytes long on this system. I am able to populate the double variable with two different sets of values that produces the same double value, please see below:
#include... (7 Replies)
Hello friends,
Is there any way to split file from n to n+6 into 1 file and (n+7) to (n+16) into other file etc.
f.e I have source pipe delimated file with 20 lines and i need to split 1-6 in file1 and 7-16 in file2 and 17-20 in file 3
I need to split into fixed number of file like 4 files... (2 Replies)
Hi, consider a file which has data such as
"random text",912345,"54","finish"
"random text",9991236745,"9954","finish"
I want to replace the numbers that don't have double quotes around them with ones that do; so the output should be
"random text","912345","54","finish"
"random... (4 Replies)
Dear All,
I have to split a tab delimited file in two files based on the presence of a positive or negative in column number 9 , for example
file:
A 1 5 erg + 6766 0.9889 0.9817 9.01882 erg inside upstream
B 1 8 erg2 + 6766 0.9889 0.9817 -9.22 erg2 inside... (3 Replies)
Hello *nix specialists,
Im working for a non profit organisation in Germany to transport DSL over WLAN to people in areas without no DSL. We are using Linksys WRT 54 router with DD-WRT firmware There are at the moment over 180 router running but we have to change some settings next time. So my... (7 Replies)
I have an assignment in which a character is the input of which some bits(from a position to certain position) are to be inverted (1's complement) and then the resultant character is to be returned....for example
unsigned char x = J from p = 3 to offset n = 5
01001010 inverted to... (1 Reply)
I have a file that is pipe delimited and in Column F they have number values, both positive and negative. I need to take the one file I am starting with and split it into two separate files based on negative and positive numbers. What is the command to do so? And then I need to also transfer... (4 Replies)
Discussion started by: cckaiser15
4 Replies
LEARN ABOUT FREEBSD
strtol
STRTOL(3) BSD Library Functions Manual STRTOL(3)NAME
strtol, strtoll, strtoimax, strtoq -- convert a string value to a long, long long, intmax_t or quad_t integer
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdlib.h>
#include <limits.h>
long
strtol(const char * restrict nptr, char ** restrict endptr, int base);
long long
strtoll(const char * restrict nptr, char ** restrict endptr, int base);
#include <inttypes.h>
intmax_t
strtoimax(const char * restrict nptr, char ** restrict endptr, int base);
#include <sys/types.h>
#include <stdlib.h>
#include <limits.h>
quad_t
strtoq(const char *nptr, char **endptr, int base);
DESCRIPTION
The strtol() function converts the string in nptr to a long value. The strtoll() function converts the string in nptr to a long long value.
The strtoimax() function converts the string in nptr to an intmax_t value. The strtoq() function converts the string in nptr to a quad_t
value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0.
The string may begin with an arbitrary amount of white space (as determined by isspace(3)) followed by a single optional '+' or '-' sign. If
base is zero or 16, the string may then include a ``0x'' prefix, and the number will be read in base 16; otherwise, a zero base is taken as
10 (decimal) unless the next character is '0', in which case it is taken as 8 (octal).
The remainder of the string is converted to a long, long long, intmax_t or quad_t value in the obvious manner, stopping at the first charac-
ter which is not a valid digit in the given base. (In bases above 10, the letter 'A' in either upper or lower case represents 10, 'B' repre-
sents 11, and so forth, with 'Z' representing 35.)
If endptr is not NULL, strtol() stores the address of the first invalid character in *endptr. If there were no digits at all, however,
strtol() stores the original value of nptr in *endptr. (Thus, if *nptr is not '