C#中,怎样把int变量转成string(非ToString方式)

easydw 2010-08-31 05:18:02
例如:有变量int a = 0x12BFFE00, 想转成string字符串,注意:字符串长度为4字节! 也就是把int型4字节复制到string变量中.

请问怎样操作?

...全文
430 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之影子 2010-09-01
  • 打赏
  • 举报
回复
BitConverter
tone770 2010-09-01
  • 打赏
  • 举报
回复
学习!!
zjklove1990 2010-09-01
  • 打赏
  • 举报
回复
int a = 0x12BFFE00
string str = Convert.ToString(a, 16).ToUpper();
yue_shanglin 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 wuyazhe 的回复:]

C# code
int Num = 0x12BFFE00;
byte[] ayData = BitConverter.GetBytes(Num);
string str = Encoding.GetEncoding(936).GetString(ayData);
ayData = Encoding.GetEncoding(936).GetBytes(str);
int nRet = BitCo……
[/Quote]
我猜测楼主的意思应该是这样的,对你的代码做个修改

int Num = 0x12BFFE00;
byte[] ayData = BitConverter.GetBytes(Num);
string str = null;
foreach(byte b in ayData)
{
str += b.ToString().PadLeft('0',3);
}
这样就将int四个位上的值全部由string表示了
不过补充一句的是,楼主确实有点蛋疼,嘿嘿
yanlingoffice 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 wuyazhe 的回复:]
C# code
int Num = 0x12BFFE00;
byte[] ayData = BitConverter.GetBytes(Num);
string str = Encoding.GetEncoding(936).GetString(ayData);
ayData = Encoding.GetEncoding(936).GetBytes(str);
int nRet = Bi……
[/Quote]
int Num = 0x12BFFE00;
byte[] ayData = BitConverter.GetBytes(Num);////先转化为byte数组
string str = System.Text.Encoding.GetEncoding(936).GetString(ayData);///再转化为字符串

通过byte数组后,再转化为字符串
但是这样出来的也是由特殊字符构成的一段字符串,
难道用特殊字符做序列号?
兔子-顾问 2010-09-01
  • 打赏
  • 举报
回复
int Num = 0x12BFFE00;
byte[] ayData = BitConverter.GetBytes(Num);
string str = Encoding.GetEncoding(936).GetString(ayData);
ayData = Encoding.GetEncoding(936).GetBytes(str);
int nRet = BitConverter.ToInt32(ayData, 0);
Console.WriteLine(nRet.ToString("X2"));
easydw 2010-09-01
  • 打赏
  • 举报
回复
谢谢大家的支持,我重新开个帖子详细说说吧.

请大家看新帖.
http://topic.csdn.net/u/20100901/09/396df065-a1f9-4a55-b82c-75a13efe742b.html

oneatree 2010-09-01
  • 打赏
  • 举报
回复
Console.WriteLine(Convert.ToString(a,16).ToUpper());
easydw 2010-09-01
  • 打赏
  • 举报
回复
问题解决,有感兴趣的参考帖子
http://topic.csdn.net/u/20100901/09/396df065-a1f9-4a55-b82c-75a13efe742b.html?583637129
easydw 2010-09-01
  • 打赏
  • 举报
回复
看着有这么一堆人质疑我为什么这么做,我就举个例子来说说做这个的用途吧.

做一个序列号生成程序,序列号中包含客户信息(信息类型:Name,int,int,int,int),长度尽可能短(这点很重要,也是我这问题的关键所在)

解决方案:客户信息->求MD5->加密计算->Base32->规范序列号.
最终结果:序列号格式为类似A32A-352A-W83A样式的一串字符串.

大家明白了吧.........
Jordan_Hill 2010-09-01
  • 打赏
  • 举报
回复
稀里糊涂
dai78 2010-09-01
  • 打赏
  • 举报
回复
a除以65536,取整前四位,取余后四位,然后转成16进制字符串
ym_pang_pang 2010-08-31
  • 打赏
  • 举报
回复
恩 确实问题好奇怪 什么需求……
li150dan 2010-08-31
  • 打赏
  • 举报
回复
用Convert.ToString()方法
yoyo_ 2010-08-31
  • 打赏
  • 举报
回复
学习了!
烈火蜓蜻 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 easydw 的回复:]
int a = 0x12BFFE00
string str = Convert.ToString(a, 16).ToUpper();
最终得到的str="12BFFE00"; 他的length=8;

解释:我要做一个序列号的程序,序列号中包含部分整型的数据,为了尽量把序列号位数减少,要求int变量转成字符串后最多占4字节. 直接用ToString转的话,长度过长,不符合需求.
[/Quote]

只想告诉楼主,Impossible
原因不用说了

难道楼主想用压缩的算法,那也很难,压缩算法把非常少的数据量压缩,所得到的可能比原文还要长。
你只想用4位,就像表示INT32的所有整数,INT32最长可以达到10位(十进制表示)16进制的表示法也要8位,
除非你用100进制。或是更大的进制来表示,才可能把字符串压缩到4位,不过,想找100个ASCII可见字符来表示100进制,也够呛
云瑀 2010-08-31
  • 打赏
  • 举报
回复
如果您要中间的四字节
那就自己动手罗
云瑀 2010-08-31
  • 打赏
  • 举报
回复
int a = 0x12BFFE00;
string b = "";
for (int i = 7; i >= 0; i--)
{
char result;
int r = (a>>(i*4)) & 0xF;
if (r >= 10 && r <= 15)
result = (char)(r-10 + Convert.ToInt32('A'));
else
result = (char)(r + Convert.ToInt32('0'));
b += result.ToString();
}
MessageBox.Show(b);

四字节LZ自己来吧
至少我不知道你是要前面还是后面......
for (int i = 7; i >= 4; i--) 前四字节
for (int i = 3; i >= 0; i--) 后四字节
easydw 2010-08-31
  • 打赏
  • 举报
回复
int a = 0x12BFFE00
string str = Convert.ToString(a, 16).ToUpper();
最终得到的str="12BFFE00"; 他的length=8;

解释:我要做一个序列号的程序,序列号中包含部分整型的数据,为了尽量把序列号位数减少,要求int变量转成字符串后最多占4字节. 直接用ToString转的话,长度过长,不符合需求.
tianliang1 2010-08-31
  • 打赏
  • 举报
回复
不是直接就可以转换为字符串了吗???


int a = 0x12BFFE00;
string str =a.ToString();
加载更多回复(9)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧