Skip to main content

Base conversion algorithms in python


Ascii to Integer
Input - '123'
Output - 123
def atoi(s):
  res = 0
  for i in range(len(s)):
    n = ord(s[i]) - ord('0')
    res = res * 10 + n
  return res


Integer to ASCII
Input - 123
Output - '123'
def itoa(num):
  res = ""
  while num:
    n = num % 10
    res += chr(ord(str(n))) or res += str(n)
    num = num / 10
  return res[::-1]

Decimal to binary
Input - 5
Output - 101
def decimal_to_binary(num):
  res = ""
  while num:
    #even number and has 0
    if not num % 2:
      res += '0'
    else:
      res += '1'
    num = num / 2
  return res[::-1]

Binary to decimal
Input - 101
Output - 5
def binary_to_decimal(binary_str):
  res, shift = 0, 0
  for i in range(len(binary_str)-1, -1, -1):
        if int(binary_str[i]):
          res += (1 << shift)
        shift += 1
  return res

Hexadecimal to decimal 
Input - 7ED
Output - 2029

HEX_DEC = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
def hex_to_decimal(hex_str):
  index, res = 0, 0
  for i in range(len(hex_str)-1, -1, -1):
    res += HEX_DEC[hex_str[i]] * (16 ** index)
    index += 1
  return res

Deciaml to Hexadecimal 
Input - 2029
Output - 7ED

DEC_HEX = {0:'0', 1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6', 7:'7', 8:'8', 9:'9', 10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F'}
def decimal_to_hex(dec_num):
  res = ""
  while dec_num:
    rem = dec_num % 16
    res += DEC_HEX[rem]
    dec_num = dec_num / 16
  return res[::-1 

Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C

C Programming Questions - Part 2

1) How do you determine the size and range of the following data types ? char unsigned char short int unsigned int unsigned long float Ans:- limits.h header file defines the minimum and maximum range macros for each of the data types , sizeof(datatype) returns the number of bytes used by the datatype in current machine. 2) Write logical expressions that tests whether a given character variable c is lowercase letter uppercase letter digit white space(includes space,tab,newline) Ans:- lowercase letter = (c >= 'a' && c <= 'z') uppercase letter = (c >= 'A' && c <= 'Z') digit = (c >= '0' && c <= '9') white space(includes space,tab,newline) = (c == ' ' || c == '\t' || c == '\n') 3) Consider unsigned int val=0xCAFE; Write expressio