Convert string to unicode in C#? - c#

How can I get the unicode values (from the code column) if I have the string?
For example, for passing the empty space " " I would like to get the value U+0020.
I found this approach:
byte[] asciiBytes1 = Encoding.ASCII.GetBytes(" ");
But this returns me the value from the decimal column.

If value is your decimal value:
string code = $"U+{value.ToString ("X4")}";
will give you what you want.
(X means hex, 4 means pad to 4 digits)

Related

How to use Substring , to return an integer of all the values after the first char

I have an string AssetNumber that have the following format C100200.
so i need to do the folloiwng:-
Get all the characters after the first (e.g. 100200 using above example)
Convert the substring to integer
Return the integer + 1
but I do not know how to use the sub-string to get all the characters after the first char, and how to convert string into int? Any help on this will be appreciated.
var result = Int32.Parse("C100200".Substring(1)) + 1;
If you would like to have default value, if you can't parse current string:
int result;
if (!Int32.TryParse("sdfsdf".Substring(1), out result)) {
result = 42;
}
result+=1;

conversion to byte gives this error : Input string was not in a correct format

i am using convert.tobyte to convert string to byte. the problem is if the data is:
string data = "5";
byte b = Convert.tobyte(data); works fine.
but, if
string data = "S"
byte b = Convert.tobyte(data); DOESN'T WORK!
ERROR : Input string was not in a correct format
What is wrong and how to solve it?
Note: i am extracting a values from textbox, so the conversion works only if the input is number digits, not characters.
how to include the characters?
Thanks.
This is exactly how Convert.ToByte method works http://msdn.microsoft.com/en-us/library/y57wwkzk.aspx
Only digits in string accepted.
Did you meant converting the string to byte array? If so, use:
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(yourString);
For strings containing only ASCII characters, the size of array will be equal to length of your string and every byte in array will be an ord value for the character. If string contains multibyte characters the size of array will be greater than length of string.
When you are not sure if a variable of string type could be correctly converted to a number you need to use the TryParse family of methods like Byte.TryParse method
string data = "S";
byte b;
if(byte.TryParse(data, out b))
Console.Writeline("Worked: " + b.ToString());
The TryParse has the advantage to not throw an exception if the string cannot be converted to a number and return just false or true while the out parameter is filled with the converted value if possible.

Converting string with letters and numbers to decimal only numbers

I'm working with RFID Reader, and it became with a software demo that has some different types of reading a rfid tag, like:
Hexadecimal,Decimal,Ascii, Abatrack etc...
The Abatrack documentation says:
Shows the CardID converted to decimal with 14 digits.
I have a CardID = 01048CABFB then with this protocol it shows me 00004371295227
where the first four zeroes were added by the software
It converts a string with letters and numbers to decimal with only numbers. how may I do that ?
I've found THIS , but it's in VB.
To convert from hexadecimal to decimal, you can do this:
string hexString = "01048CABFB";
long intVal = Int64.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
// intVal = 4371295227
You can also use Convert.ToInt64() which allows you to specify base 16 (hexadecimal):
string hexFromRFID = "01048CABFB";
Int64 decFromRFID = Convert.ToInt64(hexFromRFID, 16);
Console.WriteLine("Hex: " + hexFromRFID + " = Dec: " + decFromRFID);

How to Prefix '0' (zero) to integer value

I have a situation where I need to prefix a zero to an integer.
Initially I have string which has 12 chars, first 7 are alphabets and 5 are numeric values.
The generated string some times have a zero at starting position of numeric values. for example ABCDEF*0*1234, and my scenario is to generate a range of strings from the generated string. Suppose I want to generate a range (assume 3 in number), so it would be ABCDEF01235, ABCDEF01236, ABCDEF01237.
When I try to convert a string which has a 0 (as shown above) to int, it returns only 1234.
Is there any way to do this, without truncating zero?
You can use PadLeft to expand a given string to a given total length:
int num = 1234;
Console.WriteLine(num.ToString().PadLeft(5, '0')); // "01234"
int num = 1234;
Console.WriteLine(num.ToString("D5")); // "01234"
No with int.
You have to use string to concatenate the parsed number and the 0
int num = 1234;
Console.WriteLine($"{num:d5}");
I think you can use string.Format
int num = 1234;
Console.WriteLine(string.Format("0{0}", num));

What does Int32.Parse do exactly?

I am just beginning to learn C#. I am reading a book and one of the examples is this:
using System;
public class Example
{
public static void Main()
{
string myInput;
int myInt;
Console.Write("Please enter a number: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
Console.WriteLine(myInt);
Console.ReadLine();
}
}
When i run that and enter say 'five' and hit return, i get 'input string not in correct format' error. The thing i don't understand is, i converted the string myInput to a number didn't i? Microsoft says that In32.Parse 'Converts the string representation of a number to its 32-bit signed integer equivalent.' So how come it doesn't work when i type the word five? It should be converted to an integer shouldn't it... confused. Thanks for advice.
'five' is not a number. It's a 4-character string with no digits in it. What parse32 is looking for is a STRING that contains numeric digit characters. You have to feed it "5" instead.
The string representation that Int32.Parse expects is a sequence of decimal digits (base 10), such as "2011". It doesn't accept natural language.
What is does is essentially this:
return 1000 * ('2' - '0')
+ 100 * ('0' - '0')
+ 10 * ('1' - '0')
+ 1 * ('1' - '0');
You can customize Int32.Parse slightly by passing different NumberStyles. For example, NumberStyles.AllowLeadingWhite allows leading white-space in the input string: " 2011".
The words representing a number aren't converted; it converts the characters that represent numbers into actual numbers.
"5" in a string is stored in memory as the ASCII (or unicode) character representation of a 5. The ASCII for a 5 is 0x35 (hex) or 53 (decimal). An integer with the value '5' is stored in memory as an actual 5, i.e. 0101 binary.

Categories