gpt4 book ai didi

c# - 将整数或十六进制值转换为 unicode 点

转载 作者:行者123 更新时间:2023-11-30 20:49:46 25 4
gpt4 key购买 nike

我正在尝试解决这个任务: http://www.codeabbey.com/index/task_view/parity-control但是作为输出,我在网站上得到了很多问号,在 visual studio 控制台中得到了空白。如果我尝试打印,比方说,160 作为 char (\'u0160') 一切正常,但如果我将 int 转换为 char,我会得到空白。我在互联网上搜索并尝试了一些从十六进制到 char 的转换,但它们的工作方式与将 int 转换为 char 的方式相同,我再次得到空白。

为什么我得到这些问号,我是否必须更改编码或其他什么?我可以从十六进制或 int 创建一个 unicode 点然后只做:字符输出=转换值;这是我完成上述任务的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
using System.Text.RegularExpressions;



class Program
{
static void Main(string[] args)
{

string buffer = Console.ReadLine();
string[] container = buffer.Split(' ');
byte[] asciiCodes = new byte[container.Length];

for (int i = 0; i < container.Length; i++)
{
asciiCodes[i] = byte.Parse(container[i]);
}

for (int i = 0; i < asciiCodes.Length; i++)
{
byte currNumber = asciiCodes[i];
string binaryRepresent = Convert.ToString(currNumber, 2).PadLeft(8, '0');
int counter = 0;
for (int j = 0; j < binaryRepresent.Length; j++)
{
if(binaryRepresent[j] == '1')
{
counter++;
}
}

if(counter % 2 == 0)
{
char output = Convert.ToChar(currNumber);
Console.Write(output);
}

}
}
}

最佳答案

你做的一切都是对的,除了:

u0160 以十六进制表示,即160 hex == 352 decimal

所以如果你跑

Convert.ToChar(352);

你会得到 Š

Convert.ToChar(160) 正在解析 unicode 符号 u00A0(A0 hex = 160 dec),该符号是 “不间断空格” 并且您会看到一个空格。

如果您需要代码从十六进制字符串进行转换,反之亦然,请按以下步骤操作:

string s = "00A0";
//to int
int code = int.Parse(s, System.Globalization.NumberStyles.HexNumber);
//back to hex
string unicodeString = char.ConvertFromUtf32(code).ToString();

关于c# - 将整数或十六进制值转换为 unicode 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com