在C#中将32位整数分成四个(无符号)字符的最佳方式是什么?从32位整数转换为4个字符
5
A
回答
7
Quick'n'dirty:
int value = 0x48454C4F;
Console.WriteLine(Encoding.ASCII.GetString(
BitConverter.GetBytes(value).Reverse().ToArray()
));
整型转换为字节,扭转了字节阵列,用于以正确的顺序,然后让从它的ASCII字符表示。
编辑:Reverse方法是.NET 3.5的扩展方法,仅供参考。在您的方案中也可能不需要反转字节顺序。
干杯,大卫
+0
只是将它们打印到控制台的最终目标是什么?如果没有,与Jason和Sam的建议相比,这种方法有很多不必要的开销。 – Kip 2008-09-23 14:40:16
4
目前尚不清楚,如果这是你想要真的什么,但:
int x = yourNumber();
char a = (char)(x & 0xff);
char b = (char)((x >> 8) & 0xff);
char c = (char)((x >> 16) & 0xff);
char d = (char)((x >> 24) & 0xff);
这是假设你想解释为最低范围的Unicode字符的字节。
0
做得到的8字节块:
int a = i & 255; // bin 11111111
int b = i & 65280; // bin 1111111100000000
做下来打破了前三个字节到一个字节,只需通过适当的数量将它们划分和执行另外一个逻辑,并让您的最后一个字节。
编辑:Jason的解决方案与bitshifts当然更好。
5
Char?也许你正在寻找这个方便的小帮手功能?
Byte[] b = BitConverter.GetBytes(i);
Char c = (Char)b[0];
[...]
0
BitConverter
0
.NET使用Unicode,炭是2个字节不是1
向含有非unicode文本使用System.Text.Encoding类的二进制数据之间进行转换。
如果你要4个字节,而不是字符,然后替换字节炭在杰森的回答
4
我已经尝试了一些方法和主频转换百万整数所花费的时间。
内置转换方法,325000种蜱:
Encoding.ASCII.GetChars(BitConverter.GetBytes(x));
指针转换100000种蜱:
static unsafe char[] ToChars(int x)
{
byte* p = (byte*)&x)
char[] chars = new char[4];
chars[0] = (char)*p++;
chars[1] = (char)*p++;
chars[2] = (char)*p++;
chars[3] = (char)*p;
return chars;
}
Bitshifting,77000种蜱:
public static char[] ToCharsBitShift(int x)
{
char[] chars = new char[4];
chars[0] = (char)(x & 0xFF);
chars[1] = (char)(x >> 8 & 0xFF);
chars[2] = (char)(x >> 16 & 0xFF);
chars[3] = (char)(x >> 24 & 0xFF);
return chars;
}
相关问题
- 1. 如何将字符串转换为32位整数数组?
- 2. 将4位8位无符号整数转换为32位浮点型
- 3. 在javascript中将32位整数转换为4个字节的数据
- 4. 转换4个字节的32位无符号整数,并在相当长的
- 5. 转换为32位整数24位整数(2S补码)在C++
- 6. 使用PDO从64位转换为32位的整数
- 7. 转换32/64位数量4/8字符串
- 8. 从字符串64位整数转换
- 9. 32位无符号整数(大端)转换为长和后
- 10. 转换4个32位整型到IP地址在java中
- 11. 如何将32位整数转换为网络字节顺序?
- 12. 如何转换为32位整数为64位值在C
- 13. 从字符串转换为整数vb.net
- 14. 从字符串转换为整数
- 15. 在32位PHP安装中将64位整数转换为32位?
- 16. 转换一个32位的数字为16位,
- 17. 如何将32位整数转换为2个短路
- 18. 将4个字节转换为有符号整数
- 19. 如何在C#中将16位'short'转换为32位整数?
- 20. 将32位指针转换为64位整数
- 21. JavaScript的:转换一个52位整数,20位和32位整数
- 22. 如何将32个字符大小的字符大小的doRegister转换为32位字符的字符串?
- 23. 如何将两个16位整数(高位字/低位字)转换为32位浮点数?
- 24. 将值转换为无符号32位
- 25. 转换4字节十六进制字符串为整数
- 26. 如何将代码点32位整数数组(UTF-32?)转换为Windows本地字符串?
- 27. 将int(数字)转换为前导零的字符串? (4位)
- 28. 在BitArray转换为13位有符号整数再转换的4位中BitArray整数
- 29. 将单个字典值从字符串转换为整数?
- 30. 如何从32位/ 24位从字节到16位转换为字节
你所期望的字符是什么成为? ASCII字节的解释? – 2008-09-23 13:41:06
你是指字符或字节?字符是给定编码中文本的单个字符,可能对应于多个字节 - 可能不是您想要的。 – 2008-09-23 14:03:09