[个人整理]怎样把中文转换为16进制后,又还原为中文?

解决方法有两个,不过我觉得第一个是在有原来转换前的数据时才行得通,第二种个人没测试,不过看过似乎不许前者数据可行通!

第一种如下:
Dim strString As String = "转吧使劲地转吧"
        Dim arrByte() As Byte
        arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(strString)
        For i As Integer = 0 To arrByte.Length - 1
            Response.Write(System.Convert.ToString(arrByte(i), 16) & "<br/>")
        Next
        Response.Write(System.Text.Encoding.GetEncoding("GB2312").GetString(arrByte))

第二种如下:
string sCh = "测试";
sCh = System.Web.HttpUtility.UrlEncode(sCh, System.Text.Encoding.GetEncoding("GB2312")).ToUpper().Replace("%","");
Console.WriteLine(sCh);

System.Web.HttpUtility.UrlEncode(sCh, System.Text.Encoding.GetEncoding("GB2312")).ToUpper()

gives you

%B2%E2%CA%D4

so for "B2E2CAD4 ", just add a % before B2 and E2..-->

%B2%E2%CA%D4

then call HttpUtility.UrlDecode

s=System.Web.HttpUtility.UrlDecode("%B2%E2%CA%D4", System.Text.Encoding.GetEncoding("GB2312"))

第二种本人没测试过,如果你有测试可以告诉下你的测试结果!

在多种编程语言中,将浮点数转换16进制通常涉及将浮点数的二进制表示转换为其16进制形式。在C语言中,可以使用联合体(union)或指针来实现这一转换。以下是一个使用C语言将浮点数转换16进制并打印显示的示例代码: ```c #include <stdio.h> #include <inttypes.h> int main() { // 假设我们要转换的浮点数是3.14 float f = 3.14f; // 使用联合体共享内存 union { float f; uint32_t i; } converter; // 将浮点数的值赋给联合体的float成员 converter.f = f; // 将联合体的uint32_t成员的值转换16进制并打印 printf("浮点数 %f 的16进制表示为: 0x%08" PRIX32 "\n", converter.i); return 0; } ``` 在这个例子中,我们定义了一个联合体,该联合体包含一个浮点数成员和一个无符号32位整数成员。通过联合体,我们可以保证两个成员共享同一块内存。首先给浮点数成员赋值,然后读取无符号整数成员的值,这个值就是浮点数的二进制表示转换成的16进制值。使用`printf`函数打印时,我们使用`%08"PRIX32"`格式化字符串,这样可以得到格式化的16进制输出。 需要注意的是,这种转换依赖于特定的硬件架构和编译器,因此在不同的机器和编译器上可能会有不同的结果。此外,浮点数的表示和转换涉及IEEE 754标准,这个标准定义了浮点数的存储方式,因此在实际应用中可能需要考虑这方面的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值